如何以别名或不同名称安装 NPM 包

woo*_*hoh 33 alias npm npm-install

如何将npm install一个包放入不同的目录?

woo*_*hoh 65

假设您要安装Case包,您可以在别名下拥有特定版本:

npm i case-1.5.3@npm:case@1.5.3
Run Code Online (Sandbox Code Playgroud)

或者只是给它一个不同的名字

npm i kool@npm:case
Run Code Online (Sandbox Code Playgroud)

如果你想直接编辑 package.json:

"dependencies": {
  "case-1.5.3": "npm:case@^1.5.3",
  "kool": "npm:case@^1.6.1"
}
Run Code Online (Sandbox Code Playgroud)

要求():

let Case = require( 'case-1.5.3' );
let Kool = require( 'kool' );
Run Code Online (Sandbox Code Playgroud)

Yarn 曾经有这个功能很久了,npm 终于从2019 年 3 月v6.9.0开始有了。

如果你想更新你的 npm:

sudo npm i -g npm@latest
Run Code Online (Sandbox Code Playgroud)

  • 那么如何获取特定的依赖项来使用包别名呢?我正在尝试在现有应用程序中从 Material UI 0.x 升级到 4.x。我需要 React 16.3(0.x)和 16.8(4.x) (3认同)
  • 是否可以安装具有多个名称的包? (2认同)

Aks*_*ain 5

如果想在项目中使用一个包的两个不同版本,请使用PNPM 。
可以使用以下命令

pnpm add <any-alias-name>@npm:package-name

for example 

pnpm add new-lodash@npm:lodash@2
pnpm add old-lodash@npm:lodash@1
Run Code Online (Sandbox Code Playgroud)

现在我们可以在我们的项目中使用lodash

const newLodash = require('new-lodash');
const oldLodash = require('old-lodash');
Run Code Online (Sandbox Code Playgroud)

请注意,它仅适用于requireESM 导入语句,不适用于 ESM 导入语句,即

import oldLodash from 'old-lodash' // will throw error
Run Code Online (Sandbox Code Playgroud)