Linting and formatting configuration shared by Netlify Node.js repositories:
- ESLint
- Prettier
- Editorconfig
.gitattributes
How to add to a new Node.js repository
If you're creating a new repository, you can use the following GitHub template. Otherwise, please follow those steps:
npm install -D @netlify/eslint-config-node
- Add a
.eslintrc.js
file to the root of the project. Based on the type of the project update the content of the file:
Node.js project
const { overrides } = require('@netlify/eslint-config-node')
module.exports = {
extends: '@netlify/eslint-config-node',
rules: {},
overrides: [...overrides],
}
React application
const { overrides } = require('@netlify/eslint-config-node/react_config')
module.exports = {
extends: '@netlify/eslint-config-node/react_config',
rules: {},
overrides: [...overrides],
}
Vanilla JS in HTML files
const { overrides } = require('@netlify/eslint-config-node/vanilla_js_config')
module.exports = {
extends: '@netlify/eslint-config-node/vanilla_js_config',
rules: {},
overrides: [...overrides],
}
Individual
rules
andoverrides
can be tweaked for the specific project.
- Add the following
.prettierrc.json
to the root of the project:
"@netlify/eslint-config-node/.prettierrc.json"
- Add the following
commitlint.config.js
to the root of the project:
module.exports = { extends: ['@commitlint/config-conventional'] }
- Copy the
.editorconfig
and.gitattributes
files relativity to the root of the project. - Add the following properties to the
package.json
. Please replace thescriptsArgs
globbing expressions to match the files where the source JavaScript/Markdown/HTML/JSON/YAML files are located.npm run format
should also be run duringnpm test
andnpm run format:ci
during CI (example).
{
"scripts": {
"format": "run-s format:check-fix:*",
"format:ci": "run-s format:check:*",
"format:check-fix:lint": "run-e format:check:lint format:fix:lint",
"format:check:lint": "cross-env-shell eslint $npm_package_scriptsArgs_eslint",
"format:fix:lint": "cross-env-shell eslint --fix $npm_package_scriptsArgs_eslint",
"format:check-fix:prettier": "run-e format:check:prettier format:fix:prettier",
"format:check:prettier": "cross-env-shell prettier --check $npm_package_scriptsArgs_prettier",
"format:fix:prettier": "cross-env-shell prettier --write $npm_package_scriptsArgs_prettier"
},
"scriptsArgs": {
"eslint": "--ignore-path .gitignore --cache --format=codeframe --max-warnings=0 \"{src,scripts,tests,.github}/**/*.{js,md,html}\" \"*.{js,md,html}\" \".*.{js,md,html}\"",
"prettier": "--ignore-path .gitignore --loglevel=warn \"{src,scripts,tests,.github}/**/*.{js,md,yml,json,html}\" \"*.{js,yml,json,html}\" \".*.{js,yml,json,html}\" \"!package-lock.json\""
},
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
"pre-push": "npm run format"
}
}
}
- Add
.eslintcache
to the.gitignore