node.js - 强制从私有(private)注册表下载 npm

标签 node.js npm npm-install package.json

在我的 nodejs 项目中,我必须修改 4 个 Node 模块并将它们上传到我们的私有(private)公司注册中心,这样项目才能在构建期间下载修改后的版本。我通过更改 package-lock.json 中的 resolved 字段来实现这一点,为我们的虚拟 npm 注册表中的每个依赖项将下载转发到公共(public) npm 注册表到我们的私有(private)注册表。

这适用于 4 个模块中的 3 个,但是 1 个模块 phantomjs-prebuilt 不会下载我上传的模块。当我在安装后查看它的 package.json 时,它的 _resolved 字段显示了我在 package-lock.json 中输入的正确私有(private)注册表,但是该模块没有我的修改.

如果我使用 package.json 创建一个测试项目,该项目将 phantomjs-prebuilt 作为其唯一依赖项并修改锁定文件以从私有(private)注册表下载,它将下载我上传的正确修改版本。我假设一定有一些传递依赖性覆盖它,但我想我可以从锁定文件中看到它并覆盖它。 phantomjs-prebuilt 只在我的锁定文件中出现一次,这就是我对 resolved 字段进行更改的地方。

最佳答案

最近我自己也遇到了类似的问题。如果不能选择以不同的版本发布,这可能对您没有帮助,但也许其他人像我一样偶然发现了这个答案。

我所做的是在新版本下发布一个包的 fork 版本。

因此,我 fork 了 moddle-xml 10.0.0,并将一个包 10.0.1337 发布到我们在 Artifactory 中的私有(private)注册表中。

那样的话,我可以用 fork 版本 10.0.1337(使用 npm-force-resolutions )替换我们使用的包的传递包依赖项,而不会破坏任何限制,例如 ^10.0.0。 编辑:如果您想替换特定的外部版本,我认为您可以使用排除/包含过滤器。

然后,基于 Artifactory 的注册表将提供一个虚拟注册表,其中包含 npm-local 包(包括我的 fork)和 npm-remote 包(来自默认注册表的正常内容)setup guide . 我会将我的本地设置配置为仅从该虚拟注册表下载。

Artifactory 设置有一些缺陷(例如,您必须授予对所有物理存储库(npm-local 和 npm-remote)的读取权限,而不仅仅是虚拟存储库和 this one),但它运行良好现在对我来说。

(我确信除了 Artifactory 实现之外,这样的事情是可能的,这个特殊的事情只是我所知道的)

关于node.js - 强制从私有(private)注册表下载 npm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53752069/

相关文章:

javascript - 读取 .env 文件并将所有行转换为一个对象

css - 无法找到 @import 文件 nib.styl

typescript - 如何使用 package.json 中的 typesVersions 字段为较新的 typescript 版本提供更严格的类型?

reactjs - 在没有 ASP.NET Core 的 Visual Studio 中使用react

node.js - 带有特殊字符的 npm 私有(private)注册表用户名

node.js - npm 卡在 fetchMetadata -> 网络上

node.js - 从 Rust 生成的 Node FFI 调用和动态库

javascript - 在数组数组中循环

node.js - 如何计算 macOS 上安装的所有 node_modules 的大小?

json - 在哪里添加 NPM 依赖项以运行安装后 Hook ?