我正在开发一个自定义 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/