强制NPM从自定义克隆存储库安装所有依赖项

时间:2018-11-22 05:56:21

标签: npm clone dependency-management

这不仅仅是一个特定的编程问题,更是一个体系结构方法问题。

情况:

由于诸如left pad incident之类的问题以及依赖项会在不更改版本号的情况下发布重大更改,因此如果不更改任何项目代码或npm配置信息(例如package.json和{{ 1}}。我的构建系统将在存储库上运行package-lock.json,并在每次构建之前拉下依赖项。即使提交了npm install文件并在播放中,由于我无法控制的依赖项的更改,该构建也可能会随机失败(并且最近已经失败)。

公司已决定不再允许这种情况发生。

考虑到这些选项,最简单的解决方案似乎只是使用已知的良好配置来提交package-lock.json文件夹。但是,我担心这可能会由于开发人员客户端和构建系统(分别为Mac和Linux)之间的操作系统使用不同而导致问题。显然,某些依赖项将在安装时进行特定于环境的编译,而提交它们将导致构建系统上存在错误的二进制文件。

或者,我一直在寻找一种方法,不仅可以批量克隆我们的依赖项,还可以以某种自动化方式将依赖项的依赖项克隆到本地存储库中。从理论上讲,我可以从开发客户端和构建服务器上的存储库克隆中获取我的依赖关系,并确保无论如何深入,依赖关系都不会以任何方式更改,除非我决定手动更改它们。但是,尽管我当然可以在node_modules中指定相对于git repo URL的依赖关系,但是package.json文件是唯一实际包含所有依赖关系的文件。并且它不引用git repo URL,而是引用由npmjs.org提供的package-lock.json文件的一些"resolved" URL。

是否有一种方法可以强制我的NPM命令或.tgz文件对所有依赖项使用自定义存储库,并将其指向我们的克隆?

我是否错过了实现此目标的其他方法?您如何解决这个问题的?

关于该主题的大多数文章和StackOverflow问题似乎都支持NPM结合package-lock.json中的签入将始终解决此问题的想法,这在我们的情况下是不正确的。或者,他们建议提交package-lock.json文件夹(其他人强烈反对该文件夹)。

0 个答案:

没有答案