有没有办法匹配npm链接项目git分支?

时间:2016-12-12 15:36:27

标签: javascript node.js npm webpack babeljs

假设我有两个私有(通过npm不可用)项目:projectA和projectB,都使用Git作为回购:

ProjectA:

  • 主要项目
  • Javascript,ES6,JSX等..
  • 使用Webpack进行构建,缩小等。
  • 使用Babel编译
  • 包含Babel在package.json中编译的ProjectB repo / branch

项目B:

  • Javascript,ES6,ProjectA的依赖
  • 使用Babel编译成与ES5兼容的JS

在我的本地环境中,这些项目使用npm link进行链接,而在构建环境中,ProjectA是从ProjectA从git仓库获取的。

我想要实现的目标:在构建(Babel / Webpack)projectA时同步git分支,例如:构建ProjectA dev 分支以获取ProjectB的 dev 分支。 / p>

由于package.json不能有任何其他名称,唯一可以想到的选项是shell脚本(在projectA的package.json中查找并替换projectB的分支名称)。

但也许有更好的选择?

2 个答案:

答案 0 :(得分:1)

我用bash脚本解决了它:在构建projectA之前执行这个:

sed -i -e "s/projectB\.git.*/projectB\.git#$BRANCH\",/g" ./package.json

这会将项目的B分支更改为$BRANCH,其中包含项目'a A branch的值。

答案 1 :(得分:0)

NPM链接用于开发目的,因此您可以在针对另一个模块进行测试时编写一个模块。例如,为Express编写插件。你应该只是临时链接来做这种工作。其余时间您应该使用实际的dependenciesdevDependencies

要锁定模块之间的版本依赖关系,您应该使用git中的包。可以使用特定的提交哈希或标记来定位这些。请务必在您的代码中使用semver表示法,因为这是npm所期望的。