nodeWeb前端之路

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

2017-12-01  本文已影响1451人  日暮途远_

前言

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

分析需求

解决问题

// 我们有一个名为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解决完毕。

// (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的解决方案组合起来,就可以解决我遇到的问题了。完美~

引用

上一篇 下一篇

猜你喜欢

热点阅读