一、为什么要搭建npm 服务器
-
方便,公司内部开发的私有包,统一管理,方便开发和使用
-
安全,由于公司内部开发的模块和一些内容并不希望其他无关人员能够看到,但是又希望内部能方便使用
-
加速,自己搭建npm 服务器,自建的服务器会缓存下载过的包,能节省时间
二、搭建私服
注:本次搭建是在windows环境下搭建的
1.使用npm全局安装verdaccio
# 安装verdaccio
$ npm install -g verdaccio
2.运行 安装完成后,直接输入verdaccio命令运行即可
# 运行verdaccio
$ verdaccio
3.访问
此时打开浏览器输入http://localhost:4873就可以访问了(没有发包)
二、注册和登录
# 先切换源。默认的npm源是官方 (本地ip === http://127.0.0.1:4873)
$ npm config set registry http://10.17.223.77:4873
# 切换回官方的源
$ npm config set registry https://registry.npmjs.org/
# 注册用户,对应你 NPM 账号密码(若没有,用邮箱注册一个即可)
$ npm adduser
# 登录
$ npm login
# 查看当前用户是否是注册用户
$ npm who am i
三、操作npn库
# 发布你自己的包
$ npm publish
# 更新包 如果我们要更新包,其中版本号 version 一定要修改,否则会更新失败
$ npm publish
# 撤销包的某个版本
$ npm unpublish [<@scope>/]<pkg>@<version>
# 撤销包
$ npm unpublish [<@scope>/]<pkg>
四、常见问题
1、no_perms Private mode enable, only admin can publish this module
这是因为镜像设置成淘宝镜像了,设置回来即可: npm config set registry http://registry.npmjs.org 如果有需要改回淘宝镜像,再次修改为npm的淘宝链接: npm config set registry http://registry.npm.taobao.org
2、npm publish failed put 500 unexpected status code 401
一般是没有登录,重新登录一下 npm login 即可
3、npm ERR! you do not have permission to publish “your module name”. Are you logged in as the correct user?
包名被占用,改个包名即可。最好在官网查一下是否有包名被占用,之后再重命名
4、you must verify your email before publishing a new package
邮箱未验证,去官网验证一下邮箱
5、npm ERR! 403 403 Forbidden - PUT http://registry.npmjs.org/包名字 - You cannot publish over the previously published versions: 1.0.0.
原因:要发布的版本和原来的版本号相同 修改:要修改当前版本号
6、npm版本过低
处理:npm install -g npm update
7、可能权限原因
处理:npm publish --access=public
8、文件夹名和package.json里的'name'属性一样时也无法发布
处理:将文件夹名或'name'改成不一致即可
9、如果之前删除过npm市场同名的包,重新发布会有一定的时间限禁(目前是24小时后)