Collection of JS scripts for WordPress development.
Install the module
npm install @wordpress/scripts --save-devThis is a CLI and exposes a binary called wp-scripts so you can call it directly. However this module is designed to be configured using the scripts section in the package.json file of your project.
Example:
{
"scripts": {
"lint:pkg-json": "wp-scripts lint-pkg-json .",
"test": "wp-scripts test-unit-js"
}
}Helps enforce standards for your package.json file. It uses npm-package-json-lint with the set of default rules provided. You can override them with your own rules as described in npm-package-json-lint wiki.
Example:
{
"scripts": {
"lint:pkg-json": "wp-scripts lint-pkg-json ."
}
}This is how you execute those scripts using the presented setup:
npm run lint:pkg-jsont- lintspackage.jsonfile in the project's root folder.
Alias: wp-scripts test-unit-jest
Launches the test runner. It uses Jest behind the scenes and you are able to utilize all of its CLI options. You can also run ./node_modules/.bin/wp-scripts test-unit-js --help or npm run test:help (as presented below) to view all of the available options.
Example:
{
"scripts": {
"test": "wp-scripts test-unit-js",
"test:help": "wp-scripts test-unit-js --help",
"test:watch": "wp-scripts test-unit-js --watch"
}
}This is how you execute those scripts using the presented setup:
npm run testornpm test- runs all unit tests.npm run test:help- prints all available options to configure unit tests runner.npm run test:watch- runs all unit tests in the watch mode.
Validates that all dependencies of a project are compatible with the project's own license.
Example:
{
"scripts": {
"check-licenses": "wp-scripts check-licenses --prod --gpl2 --ignore=abab",
}
}Flags:
--prod(or--production): When present, validates onlydependenciesand notdevDependencies--dev(or--development): When present, validates bothdependenciesanddevDependencies--gpl2: Validates against GPLv2 license compatibility--ignore=a,b,c: A comma-separated set of package names to ignore for validation. This is intended to be used primarily in cases where a dependency'slicensefield is malformed. It's assumed that anyignoredpackage argument would be manually vetted for compatibility by the project owner.
This is inspired by react-scripts and kcd-scripts.
