NPM 包发布 - Publish

第一步:注册 NPM 仓库帐号

第二步:创建 NodeJS 项目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 创建项目的根目录
$ mkdir test-module

# 进入项目的根目录
$ cd test-module

# 初始化当前项目,根据提示填写项目信息
$ npm init

# 初始化后,最终生成package.json文件,文件内容示例如下:
{
"name": "test-module",
"version": "1.0.0",
"description": "0.0.1",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Clay",
"license": "MIT"
}

第三步:编写 NodeJS 代码

1
2
3
4
5
6
7
8
# 进入项目的根目录
$ cd test-module

# 创建index.js文件
$ touch index.js

# 开始编写代码
$ vim index.js

第四步:发布项目到 NPM 仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 进入项目的根目录
$ cd test-module

# 登录NPM仓库,填写用户名、密码、邮箱地址
$ npm login

# 发布项目,如果是首次执行发布命令,需要登录邮箱验证邮箱地址
$ npm publish

# 取消项目发布
$ npm unpublish test-module --forc

# 或者取消项目指定版本的发布
$ npm unpublish test-module@1.0.0 --forc

# 最后登录NPM仓库的管理页面,就可以看到自己刚发布的NPM模块。

更新 NPM 仓库中项目的版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 查看项目在NPM仓库中的所有版本号
$ npm view hexo-ssl-auth versions
[ '0.0.1' ]

# 本地修改项目的源码
...

# 更改本地项目的版本号
# 参数 patch 代表补丁,版本号的最后一位自动加1
# 参数 minor 代表小修小改,版本号的第二位自动加1
# 参数 major 代表大改,版本号的第一位自动加1
$ npm version patch
v0.0.2

# 更改NPM仓库中项目的版本号
$ npm publish

# 查看项目在NPM仓库中的所有版本号
[ '0.0.1', '0.0.2' ]

错误处理:no_perms Private mode enable, only admin can publish this module

1
2
3
4
5
6
7
8
9
10
# 详细的错误信息
npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! no_perms Private mode enable, only admin can publish this module

# 错误原因分析
使用的是淘宝源cnpm,登陆到的是cnpm

# 解决方法
切换到npm的官方源,可执行命令:npm config set registry http://registry.npmjs.org/

错误处理:You do not have permission to publish “npmtest”. Are you logged in as the correct user?

1
2
3
4
5
6
7
8
9
10
# 详细的错误信息
npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! You do not have permission to publish "npmtest". Are you logged in as the correct user? :

# 错误原因分析
所要publish的包的name和NPM仓库中已经发布的包的名字重复,因此没有权限发布这个名字的包。简单解释就是包名被别人抢先注册了

# 解决方法
编辑package.json文件,把name的值换掉。如果还出现上述错误就是还是重名的,继续换!

错误处理:You cannot publish over the previously published versions: 0.0.3

1
2
3
4
5
6
7
8
9
10
# 详细的错误信息
npm ERR! publish Failed PUT 403
npm ERR! code E403
npm ERR! You cannot publish over the previously published versions: 0.0.3. : hexo-google-adsense

# 错误原因分析
所要publish的包的version小于等于NPM仓库中已经发布的包的版本号

# 解决方法
编辑package.json文件,把version的值更改掉,必须大于NPM仓库中已经发布的包的版本号