我正在测试我们的 npm 包注册表的新版本。我想在我们的 CI 服务器中运行一个作业,指定一个不同于默认值的注册表。
我试图执行,npm publish --registry "http://nexus.dsv.myhost/nexus/repository/npmjs-registry但没有奏效。它已发布到默认注册表。
如何在运行时指定不同的注册表npm publish。它是一个作用域包。
meg*_*lop 40
听起来您在 npm 配置中的某处配置了特定于范围的注册表。
npm 将合并您的全局、本地和 CLI 提供的配置。但是任何特定于作用域的配置都将优先于无作用域的配置,无论它们是在哪里定义的。
例如,如果您@myscope:registry=xyz的文件中包含~/.npmrc此内容,则该内容将优先于--registry=abcCLI 上提供的内容,因为特定范围的注册表始终会覆盖无范围的注册表。
但是,您也可以在 CLI 本身上传递特定于范围的注册表,如下所示:
npm publish --@myscope:registry=http://nexus.dsv.myhost/nexus/repository/npmjs-registry
Run Code Online (Sandbox Code Playgroud)
请注意,由于nopt(npm 在后台使用它来解析 CLI 选项)解析自由格式开关的方式,=此处的符号是必需的。如果您改为使用空格,它将无法按预期工作。
Jak*_*ger 20
有多种方法可以实现这一点。
1)使用npm config到全局设置注册表:
npm config set registry http://nexus.dsv.myhost/nexus/repository/npmjs
Run Code Online (Sandbox Code Playgroud)
2)使用npm config于设定为包范围注册表:
npm config set @<your scope here>:registry http://nexus.dsv.myhost/nexus/repository/npmjs
Run Code Online (Sandbox Code Playgroud)
3)使用发布配置配置您的 package.json :
{
...
"publishConfig": {
"registry": "http://nexus.dsv.myhost/nexus/repository/npmjs"
},
...
}
Run Code Online (Sandbox Code Playgroud)
4)使用npmrc来配置注册表
registry=http://nexus.dsv.myhost/nexus/repository/npmjs
Run Code Online (Sandbox Code Playgroud)