工程化进阶--NPM包的小秘密

375 阅读2分钟

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等(包含自定义开发的项目私有包)源地址 发布源地址优先级(高 --> 低)

      1. npm publish --registry https:/xxxxx
      2. npmrc中定义源地址 (多为项目私有包定义)
      3. package.json中publishConfig设置
      4. 默认地址(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. 原因:
      刚删除的包24小时内无法再次上传

    解决方式:

      1.换名重发
      
      2.时效后再发
      
    
    • 其他异常报错

      地址拼接错误,使用正确的开发(私有)源

  • unpublish卸载

    • npm unpublish [<@scope>/]@

    • npm ERR! npm unpublish [<@scope>/] --force 卸载该包

注:由于我的本机默认源为taobao源。所以很多操作进加入了指令指定切回原始npm源地址(不太影响)。 简单的总结,为记录该次npm发布的小研究,归整了此文档,不完善之处,见谅,愉快。。。