@pinnacle0/pnpm-single-version v1.0.0
pnpm single version
Enforce Single version of dependencies on pnpm workspace.
Installation
pnpm add -D pnpm-single-versionUsage
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-versionor
pnpm psvAutomatic 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 installthis command will generate a checker file inside
.psvdirectory of the root directory of workspace.Then you should create a
.pnpmfile.cjsand 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
8 months ago