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
.
Install as a development dependency using composer:
$ composer require --dev moxio/captainhook-yarn-deduplicate
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
).
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.
This project adheres to Semantic Versioning.
Contributions to this project are welcome. Please make sure that your code follows the PSR-12 extended coding style.
This project is released under the MIT license.