node.js - 如何在链接的 npm 依赖项(开发中)和已安装的依赖项(暂存/生产中)之间切换?

标签 node.js npm npm-shrinkwrap

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

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

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

我想我需要类似于“devDependency”的相反内容;我可以让它在开发上安装模块,但是在登台或生产上执行npm install时从GitHub安装它。除了记得每次需要来回手动更改 package.json 之外,还有更好的方法吗?

最佳答案

您可以在 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”的符号链接(symbolic link),允许您更改该存储库中的代码并使其在需要它的其他项目中工作。

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

关于node.js - 如何在链接的 npm 依赖项(开发中)和已安装的依赖项(暂存/生产中)之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36043423/

相关文章:

node.js - 在管道之前编辑响应 header

node.js - 错误 : `C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe` failed with exit code: 1

python - 找不到 Python 可执行文件 "python"

node.js - 了解 NPM 收缩包装

node.js - 如何检查 npm-shrinkwrap.json 和 package.json 的一致性

javascript - 有条件地更新/插入并添加到数组

javascript - require 路径中的变量不适用于 r.js

javascript - 使用 node.js 和 node-mysql 执行 MySQL 查询

node.js - npm run部署后出现错误

node.js - 如何使用 `yarn` 覆盖嵌套依赖项?