4

我有一个正在开发的自定义 npm 模块,它有一个 GitHub 存储库。我也在做一个使用自定义模块的项目。在处理较大的项目时,它很好用npm link,因此我可以对模块进行更改并立即在主项目中看到它们。

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

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

我想我需要与“devDependencies”相反的东西;我可以让它不在开发上安装模块的地方,但npm install登台或生产时从 GitHub 安装它。除了记住package.json每次需要来回手动更改之外,有没有更好的方法来做到这一点?

4

1 回答 1

6

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

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

这将在您的生产环境中工作。

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

从“my-library”文件夹中,npm link直接运行。这将告诉你本地盒子上的 npm “my-library”作为链接可用。

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

准备好推送到生产环境后,将“my-library”推送到您的 github 存储库,然后您可以像往常一样在您的服务器上安装 npm。

于 2016-03-16T18:03:52.857 回答