Skip to content

Ensure single version of dependencies in pnpm workspace

License

Notifications You must be signed in to change notification settings

Shad02w/pnpm-single-version

Repository files navigation

pnpm single version

Enforce Single version of dependencies on pnpm workspace.

Commitizen friendly

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,

  1. 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.

  2. 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

About

Ensure single version of dependencies in pnpm workspace

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages