代码之家  ›  专栏  ›  技术社区  ›  djna

共享使用npm链接的项目

npm
  •  0
  • djna  · 技术社区  · 7 年前

    基本问题:我们应该如何在团队环境中使用npm链接?我撞到了一堵概念墙。

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

    npm docs .这是一个两步的过程,

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

    解释得更详细一点 articles like this .

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

    澄清:我假设node_模块已签入git,这可能是错误的。关于是否应该这样做一直存在争议,但我相信,如果一个人正在创建一个产品,那么一个可复制的构建需要节点_模块。

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   user835611    7 年前

    你的同事如何获得你的全球链接?你要登记吗 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 工作。