别名
别名允许你使用自定义名称安装包。
假设你在整个项目中都使用了 lodash
。但是 lodash
中有一个 bug 导致你的项目出现问题。你有一个修复方案,但是 lodash
不接受合并。通常情况下,你要么直接从你的 fork 安装 lodash
(作为 git 托管的依赖),要么用不同的名称发布它。如果你使用第二种方案,你就必须把项目中所有的 require 语句都改成新的依赖名称(require('lodash')
=> require('awesome-lodash')
)。而使用别名,你有第三种选择。
发布一个名为 awesome-lodash
的新包,并使用 lodash
作为它的别名来安装:
pnpm add lodash@npm:awesome-lodash
不需要修改任何代码。所有对 lodash
的 require 现在都会解析到 awesome-lodash
。
有时你可能想在项目中使用同一个包的两个不同版本。很简单:
pnpm add lodash1@npm:lodash@1
pnpm add lodash2@npm:lodash@2
现在你可以通过 require('lodash1')
来引用第一个版本的 lodash,通过 require('lodash2')
来引用第二个版本。
当与 hooks 结合使用时,这个功能会变得更加强大。也许你想在 node_modules
中的所有包里把 lodash
替换成 awesome-lodash
。你可以通过以下 .pnpmfile.cjs
轻松实现这一点:
function readPackage(pkg) {
if (pkg.dependencies && pkg.dependencies.lodash) {
pkg.dependencies.lodash = 'npm:awesome-lodash@^1.0.0'
}
return pkg
}
module.exports = {
hooks: {
readPackage
}
}