如何在链接的npm依赖项(开发中)和已安装的依赖项(在staging / prod中)之间切换?

时间:2016-03-16 17:58:28

标签: node.js npm npm-shrinkwrap

我有一个我正在处理的自定义npm模块,它有一个GitHub仓库。我还在开发一个使用自定义模块的项目。在处理较大的项目时,最好使用npm link,这样我就可以对模块进行更改并立即在主项目中查看它们。

要部署到登台或生产,我使用shrinkwrap和shrinkpack所以我可以在每次部署后执行npm install(某些依赖项需要二进制文件,并且开发系统不是'与生产系统相同,因此它们确实需要安装,而不仅仅是保存在源代码管理中。) 编辑:我正在解决这个问题,因为下面的答案在技术上得到了解决我的问题,即使它没有解决这个问题,但这并不像其他问题那么重要。

当然,由于模块已链接到我的主项目而未列在package.json中,因此部署和安装完全错过了它。我可以继续在package.json中列出并指出相应的GitHub仓库,但是每当我需要测试主项目中的更改时,我必须提交并推送这些更改,然后更新主要项目,杀死并重新启动应用程序......这很快就会很烦人。

我想我需要与#34; devDependencies"相反的东西;我可以拥有它的东西在dev上安装模块,但在暂存或生产时执行npm install时从GitHub安装它。除了记得每次我需要来回时手动更改package.json,还有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以在package.json文件中指定要安装的github存储库:

{
  dependencies: {
    "my-library": "githubusername/my-library"
  }
}

这将适用于您的生产环境。

在您的开发环境中,使用" npm link"。

来自" my-library"文件夹,直接运行npm link。这将告诉npm你的本地邮箱" my-library"是可以作为一个链接。

现在,在使用" my-library"的项目中,运行npm link my-library。这将创建一个符号链接到本地​​开发版本的#34; my-library",允许您更改该存储库中的代码,并使其在您需要它的其他项目中工作。

一旦你准备好投入生产,推动我的图书馆"到您的github存储库,然后您可以像平常一样在您的服务器上安装npm。