- 本文参加了由公众号@若川视野 发起的每周源码共读活动, 点击了解详情一起参与。
- 这是源码共读的第39期,链接:【若川视野 x 源码共读】第39期 | 如何发布一个 npm 库,自动化管理版本号、生成 changelog、tag 等 - 掘金 (juejin.cn)
前言
一直仰望那些发布自己npm包的大佬,但是由于自己的懒惰,自主学习时间的都很少,更不用说发布自己的npm包了。前端领域知识更新速度很快,逆水行舟不进则退,之前苦于没有很好学习方法的我,最近开始动手先去实践,让自己慢慢进入一个好的学习状态,下面就直接开始吧!
目标
发布一个自动提升版本、打 tag、生成 changelog ,规范commit提交等功能的npm包;
实现
-
注册npm账号( npm (npmjs.com)),注册很简单,根据提示完成简单信息录入后完成注册。
-
github上新建仓库,需要添加LICENSE开源协议,类型我选的是MIT
-
项目拉取至本地,并初始化及安装依赖
-
安装git-cz
- npm安装
npm i git-cz -D
- packge.json中加入脚本
{
"scripts": {
"commit": "git-cz"
}
}
- 安装relese-it及插件
npm init release-it
npm i @release-it/conventional-changelog -D
- relese-it安装完成后项目根目录自动生成release-it.json,打开该文件,将以下内容复制进去
{
"github": {
"release": false
},
"git": {
"commitMessage": "release: v${version}"
},
"npm": {
"publish": false
},
"hooks": {
"after:bump": "echo 更新版本成功"
},
"plugins": {
"@release-it/conventional-changelog": {
"preset": "angular",
"infile": "CHANGELOG.md"
}
}
}
- 执行release
npm run release
- 登录npm,第一次登录失败了,于是使用nrm切换npm源后再成功登录
npm login
//失败后
nrm ls
nrm use npm
- 执行npm发布命令,发布成功
- 最后因为是测试的npm包,需要执行删除命令,PS:删除后可再次发布
npm unpublished <name> -force
- NPM官网查询此包已删除
源码学习
- 关于
npm init原理 ,查阅npm文档可知:
npm init release-it ==> npx create-release-itcreate-release-it中的最后的源码 [await execa('npm', ['install', 'release-it', '--save-dev'], { stdio: 'inherit' });],既是执行安装
2. 关于
npx,由上个问题引申到npx,以前不太了解,查阅资料后发现:
npm是包管理工具,但是它不能直接执行包的功能,一般是将执行命令写入packge.json, 通过npm解析packge.json文件,再解析到包的bin文件路径,在bash中执行npm 5.2.0之后内置了npx,npx明显的功能就是可以在不用安装npm包的情况下直接执行包的功能npx的优势就是较npm执行更为灵活,可以节省磁盘空间,减少全局本地环境变量的污染
总结
git-cz能够很好的规范我的commit提交release-it可以很好地提升效率,适用于所有项目,比如自动提升版本,打tag等,虽然现在用不上,但是以后应该可以多用用- 了解了
npm发包的流程,没有想象中的复杂,最重要的是能将好的经验和想法变成一个可发布的npm包,还需努力
最近的时间一直在寻找让自己沉浸学习状态的方法,刚好在公众号看到若川大佬的源码学习活动,就立即加入了,临渊羡鱼不如退而结网,不是说开始一件事情最好的时机就是现在么,如今的大环境下,迷茫是普遍的,学习是很好沉淀自己的途径,提升自己才能走得更远,希望能够将学习的状态坚持下去。