moxio/captainhook-yarn-deduplicate

Captain Hook Plugin to check for unnecessary duplication in yarn.lock using yarn-deduplicate

v1.0.0 2021-04-22 14:53 UTC

This package is auto-updated.

Last update: 2024-10-22 22:09:17 UTC


README

Latest Stable Version

moxio/captainhook-yarn-deduplicate

This project is a plugin for CaptainHook to check your yarn.lock file for duplicate packages using yarn-deduplicate. The commit is blocked when one or more duplicate packages are found. You can then fix these manually by running yarn-deduplicate.

Installation

Install as a development dependency using composer:

$ composer require --dev moxio/captainhook-yarn-deduplicate

Usage

Add yarn-deduplicate validation as a pre-commit to your captainhook.json configuration file:

{
    "pre-commit": {
        "enabled": true,
        "actions": [
            {
                "action": "\\Moxio\\CaptainHook\\YarnDeduplicate\\YarnDuplicationCheckAction"
            }
        ]
    }
}

The check is only run when committing changes to yarn.lock. It will thus not detect pre-existing duplications as long as there are no changes to the Yarn lockfile.

The action expects yarn-deduplicate to be installed as a local NPM package (i.e. available at node_modules/.bin/yarn-deduplicate).

Conditional usage

If you want to perform duplication checks only when yarn-deduplicate is installed (i.e. available at node_modules/.bin/yarn-deduplicate), you can add a corresponding condition to the action:

{
    "pre-commit": {
        "enabled": true,
        "actions": [
            {
                "action": "\\Moxio\\CaptainHook\\YarnDeduplicate\\YarnDuplicationCheckAction",
                "conditions": [
                    {
                        "exec": "\\Moxio\\CaptainHook\\YarnDeduplicate\\Condition\\YarnDeduplicateInstalled"
                    }
                ]
            }
        ]
    }
}

This may be useful in scenarios where you have a shared CaptainHook configuration file that is included both in projects that use yarn-deduplicate and projects that don't. If yarn-deduplicate is installed, the action is run. In projects without yarn-deduplicate, the validation is skipped.

Versioning

This project adheres to Semantic Versioning.

Contributing

Contributions to this project are welcome. Please make sure that your code follows the PSR-12 extended coding style.

License

This project is released under the MIT license.