NPM:如何指定要在命令行中发布的注册表?

时间:2019-08-23 21:07:08

标签: npm nexus3

我正在测试npm软件包注册表的新版本。我想在CI服务器中运行作业,并指定与默认注册表不同的注册表。

我尝试执行npm publish --registry "http://nexus.dsv.myhost/nexus/repository/npmjs-registry,但没有成功。它已发布到默认注册表。

在运行npm publish时如何指定其他注册表。这是一个有范围的程序包。

2 个答案:

答案 0 :(得分:2)

听起来您在 npm 配置中的某处配置了特定于范围的注册表。

npm 将合并您的全局、本地和 CLI 提供的配置。但是,任何特定于范围的配置都将优先于未定义范围的配置,无论每个配置在哪里定义。

例如,如果您的 @myscope:registry=xyz 文件中有 ~/.npmrc,它会优先于 CLI 上提供的 --registry=abc,因为特定于作用域的注册表总是会覆盖无作用域的注册表。

但是,您也可以像这样在 CLI 本身上传递特定于范围的注册表:

npm publish --@myscope:registry=http://nexus.dsv.myhost/nexus/repository/npmjs-registry

请注意,由于 nopt(这是 npm 在后台用于解析 CLI 选项的方式)解析自由格式开关的方式,因此此处需要 = 符号。如果您改用空格,它将无法按预期工作。

答案 1 :(得分:0)

有多种方法可以做到这一点。

1)使用Traceback (most recent call last): File "/home/profiles/sources/impact/test.py", line 110, in _handle_future_exception future.result() File "/usr/local/lib/python3.7/concurrent/futures/_base.py", line 428, in result return self.__get_result() File "/usr/local/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result raise self._exception TypeError: __init__() missing 2 required positional arguments: 'params' and 'orig' set the registry globally

npm config

2)使用npm config set registry http://nexus.dsv.myhost/nexus/repository/npmjs set the registry for the package scope

npm config

3)使用publish config配置您的package.json:

npm config set @<your scope here>:registry http://nexus.dsv.myhost/nexus/repository/npmjs

4)使用{ ... "publishConfig": { "registry": "http://nexus.dsv.myhost/nexus/repository/npmjs" }, ... } configure the registry

npmrc