跳到主要内容
版本号:Next

npm

支持的最小 NPM 版本号是 5。

为所有项目设置全局注册中心

要为本地所有的项目设置注册中心,在任意终端窗口运行:

npm set registry http://localhost:4873/

上述代码将为当前操作系统用户设置注册中心,你可以在 ~/.npmrc 文件中看到。

为特定项目设置注册中心

在终端窗口打开项目的根目录,运行:

npm set registry http://localhost:4873/ --location project

上述命令会在项目根目录下的 .npmrc 文件设置注册中心。

或者通过指定 scope: @my-scope/auth

npm config set @my-scope:registry http://localhost:4873

在特定命令中使用注册中心

如果你需要单次使用,将 --registry http://localhost:4873/ 添加到需要使用的命令之后。 一些例子:

npm ci --registry http://localhost:4873
npm install --registry http://localhost:4873
npm install lodash --registry http://localhost:4873

如何防止包发布到其他注册中心

如果只想将包发布到 Verdaccio 但是保留从其他注册表安装包,可以在 package.json 中配置 publishConfig,参考 Npm官方文档中的描述

{
"publishConfig": {
"registry": "http://localhost:4873"
}
}

创建用户

使用 npm 8 或更低版本时, adduserlogin 都可以同时创建用户并登录。

npm adduser --registry http://localhost:4873

npm@9 之后的版本,这两个命令分开工作:

  • login 不创建用户。
npm login --registry http://localhost:4873
  • adduser 不执行登录操作。
npm adduser --registry http://localhost:4873

默认情况下,两个命令都依赖于 web 登录,添加 --auth-type=legacy 可以使用之前的登录方式。

Verdaccio 不支持 web 登录。

故障排除

npm login 使用 npm@9 或更高版本

如果你在 npm@9.x<code> 或更高版本遇到登录问题, 请尝试使用 <code>legacy 模式(参考上面的说明)。

有关未来原生支持的进展,您可以跟踪以下issue#3413

认证 Verdaccio 时,npm 不会保存 authToken

如果使用 npm@5.4.xnpm@5.5.x, 这里有一些 关于 token 的已知问题, 请升级到 6.x 或降级到 npm@5.3.0.

SSL 和证书

在 SSL 下没有有效的证书使用 Verdaccio 时, 必须在配置文件中定义 strict-ssl, 否则会遇到 SSL Error: SELF_SIGNED_CERT_IN_CHAIN 错误.

从 2014 年开始,npm 不再支持 无效证书.

npm config set ca ""
npm config set strict-ssl false

在 lockfile 中混用注册中心 (npm v7+)

由于 npm 7 引入了 lockfileVersion: 2 而变得更加严格. 如果在 lockfile 中有混合不同注册表的 resolved 字段, 如下示例:

{
"name": "npm7",
"version": "1.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"lodash": "4.17.20",
"underscore": "^1.11.0"
}
},
..... // removed for simplicity
},
"dependencies": {
"lodash": {
"version": "4.17.20",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
},
"underscore": {
"version": "1.11.0",
"resolved": "http://localhost:4873/underscore/-/underscore-1.11.0.tgz",
"integrity": "sha512-xY96SsN3NA461qIRKZ/+qox37YXPtSBswMGfiNptr+wrt6ds4HaMw23TP612fEyGekRE6LNRiLYr/aqbHXNedw=="
}
}
}

在安装时运行 npm i --registry https://registry.npmjs.org 或使用 .npmrc 均会失败.