发布

第一次发布包:

在终端输入 npm adduser ,提示输入账号,密码和邮箱,然后将提示创建成功

非第一次发布包:

在终端输入 npm login ,然后输入你创建的账号和密码,和邮箱,登陆
【注意】 npm adduser 成功的时候默认你已经登陆了,所以不需要再接着npm login.

ps:

  • 注册完需要邮箱认证,手机邮箱有时会抽风建议使用电脑登陆邮箱

例子:
1.进入项目目录下,然后再登陆:
image.png

2.发包
执行 npm publish 发布包

PS:

  • 不能和已有的包的名字重名!
  • npm对包名的限制:不能有大写字母/空格/下滑线!
  • 你的项目里有部分私密的代码不想发布到npm上?
    • 将它写入.gitignore 或.npmignore中,上传就会被忽略了

撤销

撤销发布

这里要说一点,取消发布包可能并不像你想象得那么容易,这种操作是受到诸多限制的,撤销发布的包被认为是一种不好的行为
(试想一下你撤销了发布的包[假设它已经在社区内有了一定程度的影响],这对那些已经深度使用并依赖你发布的包的团队是件多么崩溃的事情!)

PS:

  • 根据规范,只有在发包的24小时内才允许撤销发布的包( unpublish is only allowed with versions published in the last 24 hours)
  • 即使你撤销了发布的包,发包的时候也不能再和被撤销的包的名称和版本重复了(即不能名称相同,版本相同,因为这两者构成的唯一标识已经被“占用”了)

替代方案

npm unpublish的推荐替代命令:
npm deprecate <pkg>[@<version>] <message>
使用这个命令,并不会在社区里撤销你已有的包,但会在任何人尝试安装这个包的时候得到警告
例如: npm deprecate @circ1e/test-npm-publish '这个包我已经不再维护了哟~'

更新

更新发布

事实上npm更新包和发布包的命令是一样的,都是npm publish,不同之处在于,你需要修改包的版本
所以步骤是:

  1. 修改包的版本(package.json里的version字段)
  2. npm publish

关于修改版本的细节请看下面:

更新规范

在我们的package.json里面有一个version字段。那么,怎么在项目不断构建的过程中调整版本呢?
npm有一套自己的版本控制标准——Semantic versioning(语义化版本)

具体体现为:
对于”version”:”x.y.z”

  1. 修复bug,小改动,增加z
  2. 增加了新特性,但仍能向后兼容,增加y
  3. 有很大的改动,无法向后兼容,增加x

例如:我原本的项目是1.0.0版本的话
若是1中情况,变为1.0.1
若是2中情况,变为1.1.0
若是3中情况,变为2.0.0

通过 npm version <update_type> 自动改变版本
update_type为patch, minor, or major其中之一,分别表示补丁,小改,大改
image.png

其他问题

npm发布以@开头命名的public公有包!!!

package.json 中的name字段设置为 带@的包
例如: @circ1e/test-npm-publish

  1. npm publish --access=public 添加发布渠道为公共即可

简单的发布脚本

发布脚本可以简化发布流程

  1. #!/usr/bin/env bash
  2. set -e
  3. # 修改npm源地址
  4. npm config get registry
  5. npm config set registry=http://registry.npmjs.org
  6. # 登陆输入自己的npm账号和密码,还有邮箱
  7. echo '登录npm'
  8. npm login
  9. echo "发布中..."
  10. npm publish # 当发布含有作用域的包 命令为 npm publish --access public
  11. # 改回npm源地址
  12. npm config set registry=https://registry.npm.taobao.org
  13. echo -e "\n发布成功\n"
  14. exit

每次发布时运行命令 sh publish 输入账户信息即可发布。
注意先修改package的version,每次发布版本不能相同。