Enforce Single version of dependencies on pnpm workspace.
pnpm add -D pnpm-single-version
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",
]
}
You can pnpm-single-version
in Terminal
pnpm pnpm-single-version
or
pnpm psv
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 codeconst 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