别名(Aliases)
别名让您可以使用自定义名称安装软件包。
假设你在所有项目中都使用了 lodash
。 但是lodash
中的一个 bug 破坏了你的项目。 你进行了修复,但 lodash
并没有合并它。 通常你会直接从你的 fork 中安装 lodash
(作为 git 托管的依赖) 或者将其发布为另一个包名。 如果你使用第二种解决方案,则必须使用新的依赖名称(require('lodash')
=> require('awesome-lodash')
)来替换项目中的所有引用。 使用别名,你会有第三种解决方式。
发布一个名为 awesome-lodash
的新包,并使用 lodash
作为别名安装它:
pnpm add lodash@npm:awesome-lodash
不需要更改代码, 所有的lodash
引用都被解析到了awesome-lodash
。
有时你会想要在项目中使用两个不同版本的包。 很简单:
pnpm add lodash1@npm:lodash@1
pnpm add lodash2@npm:lodash@2
现在你可以通过 require('lodash1')
引入第一个版本的 lodash ,通过 require('lodash2')
引入第二个。
与钩子结合使用功能会更加强大, 也许你想将 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
}
}