NPM 不得不说的秘密
-
写在前面
项目开发中为了提高效率及避免造轮子,会考虑维护或者封装一些组件、插件,或者为了某些场景发布一个物料。
这是我们会考虑讲我们封装的区块代码发布到npm包仓库中,可供直接安装使用。那麽ლ(′◉❥◉`ლ)。。。怎么发布,遇到常见问题如何解决呐,总结如下:
-
关(基)键(础)词(条件):
node、npm、nrm、对应源(需要去注册)的账号
-
nrm查看所有可用源地址
nrm list
- 查看本地源
npm config get registry
- package配置
几个重要配置:
name => package name
version => 版本,每次发布时叠加
main => 入口文件
publishConfig => 发布源及归属设置(对应私有包需要定义restricted)
注意发布@xxx类型私有包至npm源需要付费使用,归属受限
-
publish发布
-
发布npm、taobao等(包含自定义开发的项目私有包)源地址 发布源地址优先级(高 --> 低)
- npm publish --registry https:/xxxxx
- npmrc中定义源地址 (多为项目私有包定义)
- package.json中publishConfig设置
- 默认地址(npm config)
-
异常处理 publish异常报错:
401,403,402等报错
1、未登录报错401 2、源地址链接拼错 3、包名与源地址仓库重复 4、私有包发布权限出错 后面会详细揭晓处理方式
-
-
publish error
-
401 未授权
原因:
未登录对应源
解决方式:
1.npm adduser 2.键入对应账密
预期:
-
whoami可查
-
cat ~/.npmrc可查
-
402
原因
私有包发布收费,npm会员身份即可
- 403 服务器拒绝
- 403 Forbidden - PUT xxxx cannot be republished until 24 hours have passed.
原因:
- 403 Forbidden - PUT xxxx cannot be republished until 24 hours have passed.
解决方式:
1.换名重发 2.时效后再发
-
其他异常报错
地址拼接错误,使用正确的开发(私有)源
-
-
unpublish卸载
- npm unpublish [<@scope>/]@
- npm ERR! npm unpublish [<@scope>/] --force 卸载该包
注:由于我的本机默认源为taobao源。所以很多操作进加入了指令指定切回原始npm源地址(不太影响)。 简单的总结,为记录该次npm发布的小研究,归整了此文档,不完善之处,见谅,愉快。。。