npm / lerna 发布

 项目初始化

mkdir my-demo # 创建项目文件
npm init -y # 在项目目录下初始化
npm i -g lerna # 全局安装lerna
lerna init # 初始化

创建package 

lerna create core # package name 为 @my-demo/core
lerna create utils # package name 为 @my-demo/utils

 我们经常可以看到@angular@ionic他们的包, 都可以以@开头,那么我们的可不可以,原来angular、ionic都属于一个组织(Organization)只有新创建一个Organization组织之后,才能创建@testorg/testpackname这样的包(除非使用npm用户名的方式如@username/package,否则是无法提交当包名以@your-name开头时,npm publish会默认发布为私有包,但是 npm 的私有包需要付费!!!package.json中name为@my-demo/core这种方式,my-demo则为组织名称,需要在npm上创建一个对应的组织,可以避免名字的重复。若包发布不上去检查下这个组织是否已经建立。
core/package.json 中dependencies 添加@my-demo/utils的依赖。
通过lerna link链接到本地库

创建git仓库

git维护代码版本,仓库连接上了(git remote -v)


git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/daly-young/lerna-demo.git
git push -u origin master

登录npm

npm login

重新设置仓库

package.json中添加publishConfig设置为公有库

"publishConfig": {
    //publishConfig决定了我们发布包发布到哪里去,此时发布包就不是往 www.npmjs.com/ 了
    "registry": "https://registry.npm.taobao.org/"
  },
  //改成 去掉淘宝镜像
  "publishConfig": {
    "access": "public" //等于--access public, 不加这个等于默认
  },

或者npm config set registry https://registry.npmjs.org/

发布

lerna publish from git/package

或者 npm publish --access public // 公开包发布

只能发布public公有的包,否则得认证

lerna publish做哪些事情
运行lerna updated来决定哪一个包需要被publish
如果有必要,将会更新lerna.json中的version
将所有更新过的的包中的package.json的version字段更新
将所有更新过的包中的依赖更新
为新版本创建一个git commit或tag
将包publish到npm上

修改更新版本

如果要更新版本,需要先git上面提交代码,并且修改package.json里面的"version": "1.1.0",否则无法再次提交。

问题

1、 426 Upgrade Required - PUT http://registry.npmjs.org/

大意是,从2021年10月4日开始,所有前往 npm registry 的连接,都需要使用 TLS 1.2 了.

因此,我把命名行改成使用 https,旧的错误消息就消失了

 npm config set registry=https://registry.npmjs.org

 2、You should bug the author to publish it (or use the name yourself!)

npm login 登录

 3、package.json requires a valid "version" field

package.json 添加version版本字段

4、403 Forbidden - PUT https://registry.npmjs.org/@tyh%2ftest - Forbidden

这里使用name: @org/core的方式提交,但是npm上没有注册对应的org,这里是测试就改成name:core就可以提交

你可能感兴趣的:(前端,NPM,npm,前端,node.js)