エイリアス

エイリアスを使用すると、別名を使用してパッケージをインストールできます。

Let's assume you use lodash all over your project. There is a bug in lodash that breaks your project. You have a fix but lodash won't merge it. Normally you would either install lodash from your fork directly (as a git-hosted dependency) or publish it with a different name. If you use the second solution you have to replace all the requires in your project with the new dependency name (require('lodash') => require('awesome-lodash')). 3番目の方法は、エイリアスを使うを使うことです。

Publish a new package called awesome-lodash and install it using lodash as its alias:

pnpm add lodash@npm:awesome-lodash

コードを変更する必要はありません。 All the requires of lodash will now resolve to awesome-lodash.

時々、プロジェクトでは、パッケージの 2 つの異なるバージョンを使用したい場合があります。それも簡単です。

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

Now you can require the first version of lodash via require('lodash1') and the second via require('lodash2').

This gets even more useful when combined with hooks. Maybe you want to replace lodash with awesome-lodash in all the packages in node_modules. You can easily achieve that with the following .pnpmfile.mjs:

.pnpmfile.mjs
function readPackage(pkg) {
  if (pkg.dependencies && pkg.dependencies.lodash) {
    pkg.dependencies.lodash = 'npm:awesome-lodash@^1.0.0'
  }
  return pkg
}

export const hooks = {
  readPackage
}