diff --git a/packages/scripts/CHANGELOG.md b/packages/scripts/CHANGELOG.md index 30aed0c902b09..e7e408e8b0166 100644 --- a/packages/scripts/CHANGELOG.md +++ b/packages/scripts/CHANGELOG.md @@ -1,3 +1,9 @@ +## Master + +### New Features + +- The `lint-js`, `lint-pkg-json` and `lint-style` commands ignore now files located in `build` and `node_modules` folders by default ([15977](https://github.com/WordPress/gutenberg/pull/15977)). + ## 3.2.0 (2019-05-21) ### New Feature diff --git a/packages/scripts/README.md b/packages/scripts/README.md index b21c7078a61d5..0e394ad71f23a 100644 --- a/packages/scripts/README.md +++ b/packages/scripts/README.md @@ -123,6 +123,9 @@ This is how you execute the script with presented setup: * `npm run lint:js` - lints JavaScript files in the entire project's directories. + +By default, files located in `build` and `node_modules` folders are ignored. + #### Advanced information It uses [eslint](https://eslint.org/) with the set of recommended rules defined in [@wordpress/eslint-plugin](https://www.npmjs.com/package/@wordpress/eslint-plugin) npm package. You can override default rules with your own as described in [eslint docs](https://eslint.org/docs/rules/). Learn more in the [Advanced Usage](#advanced-usage) section. @@ -145,6 +148,8 @@ This is how you execute those scripts using the presented setup: * `npm run lint:pkg-json` - lints `package.json` file in the project's root folder. +By default, files located in `build` and `node_modules` folders are ignored. + #### Advanced information It uses [npm-package-json-lint](https://www.npmjs.com/package/npm-package-json-lint) with the set of recommended rules defined in [@wordpress/npm-package-json-lint-config](https://www.npmjs.com/package/@wordpress/npm-package-json-lint-config) npm package. You can override default rules with your own as described in [npm-package-json-lint wiki](https://github.com/tclindner/npm-package-json-lint/wiki). Learn more in the [Advanced Usage](#advanced-usage) section. @@ -167,6 +172,8 @@ This is how you execute the script with presented setup: * `npm run lint:css` - lints CSS files in the whole project's directory. +By default, files located in `build` and `node_modules` folders are ignored. + #### Advanced information It uses [stylelint](https://github.com/stylelint/stylelint) with the [stylelint-config-wordpress](https://github.com/WordPress-Coding-Standards/stylelint-config-wordpress) configuration per the [WordPress CSS Coding Standards](https://make.wordpress.org/core/handbook/best-practices/coding-standards/css/). You can override them with your own rules as described in [stylelint user guide](https://github.com/stylelint/stylelint/docs/user-guide.md). Learn more in the [Advanced Usage](#advanced-usage) section. diff --git a/packages/scripts/config/.eslintignore b/packages/scripts/config/.eslintignore new file mode 100644 index 0000000000000..e3fbd98336eaf --- /dev/null +++ b/packages/scripts/config/.eslintignore @@ -0,0 +1,2 @@ +build +node_modules diff --git a/packages/scripts/config/.npmpackagejsonlintignore b/packages/scripts/config/.npmpackagejsonlintignore new file mode 100644 index 0000000000000..ae6cdbfb623bb --- /dev/null +++ b/packages/scripts/config/.npmpackagejsonlintignore @@ -0,0 +1,3 @@ +# By default, all `node_modules` are ignored. + +build diff --git a/packages/scripts/config/.stylelintignore b/packages/scripts/config/.stylelintignore new file mode 100644 index 0000000000000..ae6cdbfb623bb --- /dev/null +++ b/packages/scripts/config/.stylelintignore @@ -0,0 +1,3 @@ +# By default, all `node_modules` are ignored. + +build diff --git a/packages/scripts/scripts/lint-js.js b/packages/scripts/scripts/lint-js.js index c7346fb76ad88..33bcdf83e5f89 100644 --- a/packages/scripts/scripts/lint-js.js +++ b/packages/scripts/scripts/lint-js.js @@ -17,6 +17,7 @@ const { const args = getCliArgs(); +// See: https://eslint.org/docs/user-guide/configuring#using-configuration-files-1. const hasLintConfig = hasCliArg( '-c' ) || hasCliArg( '--config' ) || hasProjectFile( '.eslintrc.js' ) || @@ -33,9 +34,17 @@ const config = ! hasLintConfig ? [ '--no-eslintrc', '--config', fromConfigRoot( '.eslintrc.js' ) ] : []; +// See: https://eslint.org/docs/user-guide/configuring#ignoring-files-and-directories. +const hasIgnoredFiles = hasCliArg( '--ignore-path' ) || + hasProjectFile( '.eslintignore' ); + +const defaultIgnoreArgs = ! hasIgnoredFiles ? + [ '--ignore-path', fromConfigRoot( '.eslintignore' ) ] : + []; + const result = spawn( resolveBin( 'eslint' ), - [ ...config, ...args ], + [ ...config, ...defaultIgnoreArgs, ...args ], { stdio: 'inherit' } ); diff --git a/packages/scripts/scripts/lint-pkg-json.js b/packages/scripts/scripts/lint-pkg-json.js index b37e0a07bc75b..c3cbd4f429c68 100644 --- a/packages/scripts/scripts/lint-pkg-json.js +++ b/packages/scripts/scripts/lint-pkg-json.js @@ -17,6 +17,7 @@ const { const args = getCliArgs(); +// See: https://github.com/tclindner/npm-package-json-lint/wiki/configuration#configuration. const hasLintConfig = hasCliArg( '-c' ) || hasCliArg( '--configFile' ) || hasProjectFile( '.npmpackagejsonlintrc.json' ) || @@ -27,9 +28,17 @@ const config = ! hasLintConfig ? [ '--configFile', fromConfigRoot( 'npmpackagejsonlint.json' ) ] : []; +// See: https://github.com/tclindner/npm-package-json-lint/#cli-commands-and-configuration. +const hasIgnoredFiles = hasCliArg( '--ignorePath' ) || + hasProjectFile( '.npmpackagejsonlintignore' ); + +const defaultIgnoreArgs = ! hasIgnoredFiles ? + [ '--ignorePath', fromConfigRoot( '.npmpackagejsonlintignore' ) ] : + []; + const result = spawn( resolveBin( 'npm-package-json-lint', { executable: 'npmPkgJsonLint' } ), - [ ...config, ...args ], + [ ...config, ...defaultIgnoreArgs, ...args ], { stdio: 'inherit' } ); diff --git a/packages/scripts/scripts/lint-style.js b/packages/scripts/scripts/lint-style.js index d72a877fa9370..32783a97f4eb2 100644 --- a/packages/scripts/scripts/lint-style.js +++ b/packages/scripts/scripts/lint-style.js @@ -17,7 +17,8 @@ const { const args = getCliArgs(); -const hasStylelintConfig = hasCliArg( '--config' ) || +// See: https://github.com/stylelint/stylelint/blob/master/docs/user-guide/configuration.md#loading-the-configuration-object. +const hasLintConfig = hasCliArg( '--config' ) || hasProjectFile( '.stylelintrc' ) || hasProjectFile( '.stylelintrc.js' ) || hasProjectFile( '.stylelintrc.json' ) || @@ -26,13 +27,21 @@ const hasStylelintConfig = hasCliArg( '--config' ) || hasProjectFile( '.stylelint.config.js' ) || hasPackageProp( 'stylelint' ); -const config = ! hasStylelintConfig ? +const config = ! hasLintConfig ? [ '--config', fromConfigRoot( '.stylelintrc.json' ) ] : []; +// See: https://github.com/stylelint/stylelint/blob/master/docs/user-guide/configuration.md#stylelintignore. +const hasIgnoredFiles = hasCliArg( '--ignore-path' ) || + hasProjectFile( '.stylelintignore' ); + +const defaultIgnoreArgs = ! hasIgnoredFiles ? + [ '--ignore-path', fromConfigRoot( '.stylelintignore' ) ] : + []; + const result = spawn( resolveBin( 'stylelint' ), - [ ...config, ...args ], + [ ...config, ...defaultIgnoreArgs, ...args ], { stdio: 'inherit' } );