npm -np 包发布工具
先说一个例子:raect 举例
1、 首先有一个github仓库
2、需要发布在npm上
3、遵循语义化版本(Semantic versioning:如17.0.1, 较大变动递增高位,一般变动递增中位,较小变动递增低位)
4、每次更新都有一个git tag,即有不同版本号并存,同时在releases 中记录每次更新
发包工作
因此发布需要做的事:
1、运行测试用例(有的话)
2、更新 package.json 版本号
3、创建 git tag 和 release 记录变动
4、发布到github 和 npm
np 工具
以上步骤可以使用 np 工具快速完成,推荐使用国内镜像,不然可能很慢 或者 失败
国内镜像: npm config set registry https://registry.npm.taobao.org
安装:npm i np -g
使用 np 前提:
- 项目是一个Git 仓库、至少 push 过一次 、执行np时不能有未push提交的文件
np 使用
1、开发完成后,commit 提交
2、npm login 登陆 (发布必须)
3、运行 np 命令,选择版本增量方式,上下键到对应选项,enter,或自定义
注意:包名不要冲突,空间命名要和npm用户名一致,否则抛出异常
可能会提示:(可以忽略)
Warning: No files field specified in package.json nor is a .npmignore file present.
Having one of those will prevent you from accidentally publishing development
-specific files along with your package's source code to npm.
大意为:package.json中没有指定files字段,也不存在.npmignore文件。拥有其中一个可以防止您意外地将特定于开发的文件以及包的源代码发布到npm。
根据提示选择版本号:
注意:np会自动运行 test 测试命令,初始化后的package.json文件 test 默认是抛出错误的,需要自行更改,见下文(问题)
在流程的最后。np 会启动浏览器窗口,在这写你的 release notes。
填写后确认
问题:
运行test
报错
np自动运行 npm test
命令作为 np checks的一部分。
发生这个错误,是因为执行 npm test
命令后的返回结果(exit 1,非0 都是抛出错误)。
也可以尝试手动执行 npm test :(抛出错误)
打开 package.json 文件,修改 test
脚本来修复这个 error,如下:
"scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
+ "test": "echo \"No test specified\""
},
np执行后,没有结果,也没报错?
如果没有push,尝试 push 后再操作,也有可能是网络问题,无响应
np执行报错,但是去npm上看,包已经发布了
在 publishing 完成后(即已经发布到npm)后报错,
原因是:报错原因
上一次 np 失败后版本号被缓存,表示当前版本已存在,不可以重复发布,可以修改版本号后两位数字,提高版本号来解决
如果发现发布的版本有bug怎么办?
- 快速修复好bug,发布新的版本
- 撤回上一个版本,修改好之后重新发布
撤回某个版本命令如下:
npm unpublish xxxx@4.0.26
撤回整个包(谨慎操作)
npm unpublish <package-name> -f