别名(Aliases)

别名让您可以使用自定义名称安装软件包。

假设你在所有项目中都使用了 lodash。 但是lodash中的一个 bug 破坏了你的项目。 你进行了修复,但 lodash 并没有合并它。 通常你会直接从你的 fork 中安装 lodash (作为 git 托管的依赖) 或者将其发布为另一个包名。 如果你使用第二种解决方案,则必须使用新的依赖名称(require('lodash') => require('awesome-lodash'))来替换项目中的所有引用。 使用别名,你会有第三种解决方式。

发布一个名为 awesome-lodash 的新包,并使用 lodash 作为别名安装它:

  1. pnpm add lodash@npm:awesome-lodash

不需要更改代码, 所有的lodash引用都被解析到了awesome-lodash

有时你会想要在项目中使用两个不同版本的包。 很简单:

  1. pnpm add lodash1@npm:lodash@1
  2. pnpm add lodash2@npm:lodash@2

现在你可以通过 require('lodash1') 引入第一个版本的 lodash ,通过 require('lodash2') 引入第二个。

与钩子结合使用功能会更加强大, 也许你想将 node_modules 里所有的 lodash 引用也替换为 awesome-lodash , 下面的 .pnpmfile.cjs 可以轻松实现:

  1. function readPackage(pkg) {
  2. if (pkg.dependencies && pkg.dependencies.lodash) {
  3. pkg.dependencies.lodash = 'npm:awesome-lodash@^1.0.0'
  4. }
  5. return pkg
  6. }
  7. module.exports = {
  8. hooks: {
  9. readPackage
  10. }
  11. }