准备工作
- node版本v14.18.0以上
- 将npm更新至新版本(
npm install -g npm@latest
)
一、注册npm账号
二、初始化项目
新建项目目录,使用npm init
命令创建package.json文件,按照提示填入初始信息。
如模块名称:mikey-npm-test(只能是小写)
初始版本号选择:v1.0.0
模块名称需遵循相关政策要求:https://www.npmjs.com/policies,不能够与已有NPM模块名冲突等等。
创建入口文件如index.js
function npmPublishTest(){
var name = 'Mr.Mikey';
var test = function() {
console.log('Hello, my first NPM package')
}
return {
name,
test,
}
}
module.exports = npmPublishTest()
创建README.md文件,填写说明文档如:
一个基本的npm包文件结构如下
三、登录npm
注意源的问题,只有npm官方源可以登录成功,如果报错403,一般是因为非npm官方源,可通过npm get registry命令查看源信息,切换源可以使用nrm进行管理。
简单的处理方式是在不确定源的情况下直接命令后带上源地址:
npm login --registry https://registry.npmjs.org
根据提示输入之前注册的用户名、密码、邮箱,按回车后会发送验证邮件到注册邮箱,需填入验证码后再次回车确认,登录成功如下图所示
四、发布npm包
注意源的问题,只有npm官方源可以发布成功,命令后带上源地址即可
npm publish --registry https://registry.npmjs.org
发布成功状态如下图所示
登录npm官网即可看到已经发布的包
五、后续更新npm包
修改代码后,执行命令自动叠加版本号:
npm version patch
每次产生修改发布必须要修改版本号,npm不允许修改内容后发布相同的版本号
npm version后面参数说明:
patch:小变动,比如修复bug等,版本号变动 v1.0.0->v1.0.1
minor:增加新功能,不影响现有功能,版本号变动 v1.0.0->v1.1.0
major:破坏模块对向后的兼容性,版本号变动 v1.0.0->v2.0.0
迭代版本号之后重复第四步:
npm publish --registry https://registry.npmjs.org
六、撤销发布(慎用)
npm unpublish 包名@版本号 --force (根据需要接上npm源地址)
示例:npm unpublish mikey-npm-test@1.0.0 --force --registry https://registry.npmjs.org
说明:撤销发布的包被认为是一种不好的行为,因为如果有团队使用和依赖你的包时,撤销便会造成很大的影响。
-
根据规范,只有在发包的24小时内才允许撤销发布的包
-
即使你撤销了发布的包,发包的时候也不能再和被撤销的包的名称和版本重复了(即不能名称相同,版本相同,因为这两者构成的唯一标识已经被"占用"了)