为什么 jsonlines 包会解析为registry.npm.taobao.org?

Rai*_*ere 3 npm jsonlines

当我安装 npm 包jsonlines时,它被解析为镜像注册表registry.npm.taobao.org而不是registry.npmjs.org. 它仅针对 执行此操作jsonlines。这是什么原因造成的?

这是我的 package-lock.json 的差异。原始的“已解析”值是在另一个开发人员安装该包时创建的:

     "jsonlines": {
       "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz",
+      "resolved": "https://registry.npm.taobao.org/jsonlines/download/jsonlines-0.1.1.tgz",
       "integrity": "sha1-T80kbcXQ44aRkHxEqwAveC0dlMw="
     },
Run Code Online (Sandbox Code Playgroud)

我确认我配置的注册表是 npmjs.org:

$ npm config get registry
https://registry.npmjs.org/
Run Code Online (Sandbox Code Playgroud)

Rai*_*ere 6

开发人员的 npm 注册表可能已设置registry.npm.taobao.org为运行时的npm install jsonlines. 一些用户将 npm 配置为使用淘宝注册表以实现地理邻近。

删除node_modulespackage-lock.json重新运行npm install即可修复。


提示:使用lockfile-lint来防止它再次发生。

  1. npm install --save-dev lockfile-lint
  2. 运行lockfile-lint您的 lint 脚本,最好是在预推送git hook 中。
  3. 将此配置添加到您的package.json
  "lockfile-lint": {
    "allowed-schemes": [
      "https:"
    ],
    "allowed-hosts": [
      "npm"
    ],
    "empty-hostname": false,
    "type": "npm ",
    "path": "package-lock.json"
  },

Run Code Online (Sandbox Code Playgroud)