pnpm single version
Enforce Single version of dependencies on pnpm workspace.
Installation
pnpm add -D pnpm-single-version
Usage
Add following options to package.json in project root
"pnpmSingleVersion": {
"includes": [
// Place all the single version dependencies here
"@babel/core",
"esbuild",
// glob is also supported
"eslint-plugin-*",
"*-plugin",
]
}
Maunal Checking using CLI
You can pnpm-single-version in Terminal
pnpm pnpm-single-version
or
pnpm psv
Automatic resolve (Recommanded)
Apart from manual checking, checking can also be done when pnpm-lock.yaml is resolved, where pnpm detected dependencies changes running pnpm install , pnpm update and pnpm removed. This is much effective.
By using afterAllResolved hook in .pnpmfile.cjs, installation process can be interrupted when non-single version dependencies is detected.
To setup it up,
-
First, install checker via
pnpm pnpm-single-version install
this command will generate a checker file inside .psv directory of the root directory of workspace.
-
Then you should create a .pnpmfile.cjs and add following code
const hook = require("./.psv/hook");
module.exports = {
hooks: {
afterAllResolved: hook,
},
};
Now, when you call pnpm install and pnpm update, checking is going to be involve automatically only when have dependenices changes.
PS: You may need to run psv install every time you update pnpm-single-version
More about .pnpmfile.cjs at https://pnpm.io/pnpmfile