共享使用npm链接的项目

时间:2018-08-25 20:09:59

标签: npm

基本问题:我们应该如何在团队环境中使用npm链接?我正在碰概念墙。

想法似乎很简单:主项目使用子项目,我们使用npm链接使子项目对主项目可见,现在,无需任何新的npm安装即可立即看到子项目中的更改。

npm docs中描述。这是一个两步过程,

  1. 链接子项目-这将在npm全局目录中建立一个链接
  2. 从main到全局条目的链接,实际上是通过npm全局目录的两级链接。

articles like this中进行了更多解释。

我的问题:当我将主项目检入git时,它具有对这些全局模块的引用,这些模块仅在我的机器上是全局的。我的同事同时检查了主项目和子项目,他们是否不需要执行步骤1为每个子项目创建全局链接?

澄清:我做出了一个可能不正确的假设,即将node_modules检查到git中。关于是否应该这样做,一直存在争议,但是我对这样的想法深信不疑,即如果要创建一种产品,那么可复制的构建就需要node_modules。

这似乎很混乱。显然,我们可以编写所有脚本,但这应该如何工作?

1 个答案:

答案 0 :(得分:1)

您的同事如何获得全局链接?您要签入node_modules吗?您永远不要提交任何使用npm link的东西。它对本地开发很有用,但不适用于git。

如果您不想过于频繁地发布,则可以使主项目使用依赖项的特定git分支,而不要使用已发布的版本,例如"jscs": "jscs-dev/node-jscs#v1.12.0"

如果您知道依赖关系的相对路径,则还可以添加到test脚本或package.json中任何其他脚本的链接。那就是我们在CI上使用的,因为我们需要针对当前版本而不是已发布的模块来测试样本:

{
  "scripts": {
    "test": "cd ./some/my-dep; npm link; cd ../../; npm link my-dep; mocha test/*"
  }
}

如果您不了解相关补丁,则可以使用环境变量,并且与您一起工作的每个人都必须设置该变量才能使npm test正常工作。