有没有办法在单个 package.json 中配置多个注册表

Geo*_*Com 6 javascript artifactory npm package.json

有什么办法可以在package.json中的publishConfig中定义两个注册表?

用例是根据目的在 2 个不同的位置发布工件,当它是 SNAPSHOT 时,它将使用快照路径,而为了发布目的,它使用另一个。

就像是:

"publishConfig": {
        "snapshot-registry": "http://artifactory.test/artifactory/api/npm-snapshots"
        "release-registry": "http://artifactory.test/artifactory/api/npm-releases"
    },
Run Code Online (Sandbox Code Playgroud)

小智 3

通过阅读 npm package json 文档npm-package-json您只能npm-config使用 覆盖现有设置publishConfig,因此您可能无法添加新属性。

但是,您可以.npmrc为作用域包和默认值设置不同的注册表项。在.npmrc下面的示例中,我为 GitHub 注册表设置了快照包,其他所有内容都可以发布到默认的 npm 注册表。

@snapshot:registry=https://npm.pkg.github.com/snapshot
registry=https://registry.npmjs.org
Run Code Online (Sandbox Code Playgroud)

棘手的部分是软件包将转到哪个注册表。正确的?根据我们现在的设置,简单的设置npm publish将无法工作,或者它可能只是发布到默认注册表。我使用的一种方法是使用 登录到我的作用域注册表npm login --registry=https://npm.pkg.github.com --scope=snapshot,编辑我的 package.json 以匹配我的作用域包的名称,这样@snapshot/package它就不会转到默认注册表然后发布。

然后,您可以登录默认注册表,进行相应编辑并在那里再次发布。

我希望这对您有帮助,这是一个烦人的过程,我们甚至可能需要一个“包注册表管理器”,不知道是否存在。