为什么我不能将@bundled-es-modules/chai 别名为chai?
Why Can't I Alias @bundled-es-modules/chai to chai?
通常在 NPM 中,您可以使用别名安装包,如下所示:
npm i alias@npm:real-package-name
作为参考,这里是宣布别名功能的地方:https://npm.community/t/release-npm-6-9-0/5911
b7b54f2d1 413 #3 530 Add support for package aliases. This allows packages to be installed under a different directory than the package name listed in package.json, and adds a new dependency type to allow this to be done for registry dependencies. (@zkat 50)
这允许您 import
/require
使用别名而不是真实名称的包:
import foo from 'alias'
但是,当我尝试使用 ESM 捆绑版本的 Chai 执行此操作时:
npm i --save-dev chai@npm:bundled-es-modules/chai
我收到错误“别名仅适用于注册表部门”...但我根本找不到有关该错误实际含义的任何信息。这是完整的堆栈跟踪:
25 verbose stack Error: aliases only work for registry deps
25 verbose stack at fromAlias (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/npa.js:270:11)
25 verbose stack at resolve (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/npa.js:70:12)
25 verbose stack at npa (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/npa.js:52:10)
25 verbose stack at /usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:406:31
25 verbose stack at Array.map (<anonymous>)
25 verbose stack at Arborist.[add] (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:405:28)
25 verbose stack at Arborist.[applyUserRequests] (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:390:23)
25 verbose stack at Arborist.buildIdealTree (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:207:37)
25 verbose stack at async Promise.all (index 1)
25 verbose stack at async Arborist.reify (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:123:5)
任何人都可以解释这个错误的含义,以及为什么我不能为该包起别名(或者如果可以的话,我做错了什么)?
我假设您想要在安装期间别名这个namespaced/scoped包@bundled-es-modules/chai。
在这种情况下,将 @
符号前缀添加到安装命令的包 <name>
部分。例如
npm i --save-dev chai@npm:@bundled-es-modules/chai
^
npm-install 文档为 alias 命令提供了以下概要:
npm install <alias>@npm:<name>
本质上,作用域包的 @
前缀是包 <name>
.
的一部分
通常在 NPM 中,您可以使用别名安装包,如下所示:
npm i alias@npm:real-package-name
作为参考,这里是宣布别名功能的地方:https://npm.community/t/release-npm-6-9-0/5911
b7b54f2d1 413 #3 530 Add support for package aliases. This allows packages to be installed under a different directory than the package name listed in package.json, and adds a new dependency type to allow this to be done for registry dependencies. (@zkat 50)
这允许您 import
/require
使用别名而不是真实名称的包:
import foo from 'alias'
但是,当我尝试使用 ESM 捆绑版本的 Chai 执行此操作时:
npm i --save-dev chai@npm:bundled-es-modules/chai
我收到错误“别名仅适用于注册表部门”...但我根本找不到有关该错误实际含义的任何信息。这是完整的堆栈跟踪:
25 verbose stack Error: aliases only work for registry deps
25 verbose stack at fromAlias (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/npa.js:270:11)
25 verbose stack at resolve (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/npa.js:70:12)
25 verbose stack at npa (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/npa.js:52:10)
25 verbose stack at /usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:406:31
25 verbose stack at Array.map (<anonymous>)
25 verbose stack at Arborist.[add] (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:405:28)
25 verbose stack at Arborist.[applyUserRequests] (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:390:23)
25 verbose stack at Arborist.buildIdealTree (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:207:37)
25 verbose stack at async Promise.all (index 1)
25 verbose stack at async Arborist.reify (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:123:5)
任何人都可以解释这个错误的含义,以及为什么我不能为该包起别名(或者如果可以的话,我做错了什么)?
我假设您想要在安装期间别名这个namespaced/scoped包@bundled-es-modules/chai。
在这种情况下,将 @
符号前缀添加到安装命令的包 <name>
部分。例如
npm i --save-dev chai@npm:@bundled-es-modules/chai
^
npm-install 文档为 alias 命令提供了以下概要:
npm install <alias>@npm:<name>
本质上,作用域包的 @
前缀是包 <name>
.