npm 私有包依赖 本地开发调试频繁更新解决方案

前言

最近遇到一个问题,我们公司自己内部开发了多个npm私有包,包之间有依赖关系,例如A依赖B。当B发现有BUG需要修复的时候,灾难来了。
我们需要先在B中修复问题,然后publish。接着在更新A的package.json中B的版本号,然后要下载B的最新版。而且在开发初始,这种情况非常频繁,而且版本号是蹭蹭往上涨。简直要疯掉~~~

分析需求

  • (1)我希望B包publish之后,A包中B会自动更新为最新版本。
  • (2)我希望有一个内部开发的版本(alpha),他和主版本(stable)可以并行存在。并且开发的版本经过测试验收完成之后,我们可以切换最新的alpha为stable

解决问题

  • 问题1的解决办法
    baidu,google之后。发现有一个叫npm link的命令。他可以创建一个软链接来解决这个问题。举个栗子:
// 我们有一个名为base的package,先将路径切换到base的目录下。
cd base

// 执行npm link之后,会将base复制到全局模块中(就像执行了npm i base -g一样)
npm link

// 我们有另外一个名为act的package,将路径切换到act的目录下。
cd act 

// 通过npm link base命令,act依赖的base包会形成一个链接指向全局模块中的的base
npm link base

之后B中的代码有变更,publish之后,A会自动更新B为最新版本。他们之间的指向关系为A->global->B。问题1解决完毕。

  • 问题2的解决办法
    baidu,google之后,发现npm有两个命令。version和tag,两个组合使用可以解决第二个问题。举个栗子:
// (1)重点:此处注意。必须先删除package-lock.json文件
rm -f package-lock.json

// (2)发现B有个BUG,需要解决,解决完毕,并且提交git之后。执行如下命令,会创建一个n.n.n-n的version(例如0.1.5-5)
npm version prerelease

// (3)通过tag命令,我们可以创建一个和latest并行的测试版本,两者可以互相独立。
npm publish --tag alpha

// 简单操作方法:可以在package.json中创建npm命令,将修改的代码提交到git之后,执行执行此npm script就可以了。
"scripts": {
    "beta": "rm -f package-lock.json && npm version prerelease && npm publish --tag beta"
}

问题2顺利解决。测试验收完毕,要上线的时候。我们将leatest的version改变下就行了。如下:

npm dist-tag add base@0.1.4 lastest 

总结

将问题1和问题2的解决方案组合起来,就可以解决我遇到的问题了。完美~

引用

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 作者:TAT.云中飞扬转载自AlloyTeam:http://www.alloyteam.com/2016/03/...
    IT程序狮阅读 11,593评论 0 18
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,752评论 25 709
  • npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具...
    build1024阅读 12,439评论 0 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,224评论 19 139
  • 脱发、秃顶、白发 让你垂头丧气,自信全无! 让你遮遮掩掩,无法直面人生! 让你职场不顺,事业受阻! 光秃秃的脑壳!...
    A小珍妮阅读 2,675评论 0 0

友情链接更多精彩内容