NPM package for shared ESLint config used at JuniLearning.
npm i --save-dev eslint-config-juni
- Install peer dependencies:
npx install-peerdeps --dev eslint-config-juni
- Create a file called
.eslintrc.js
in the project root, next topackage.json
. Leave it empty for now. The contents will vary depending on the repo's environment type.
React projects:
module.exports = {
extends: ["juni/packages/react", "juni/packages/base"],
};
React-Typescript projects:
module.exports = {
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"],
extends: [
"juni/packages/react",
"juni/packages/base",
"juni/packages/typescript",
],
};
Vanila Typescript (no React) projects:
module.exports = {
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"],
extends: ["juni/packages/base", "juni/packages/typescript"],
};
Non-React projects
module.exports = {
extends: ["juni/packages/base"],
};
(more configs coming soon)
Enforce linting config on commits by using the lint pre-push plugin. This lints all committed files when a user attempts to push their code and will block the push if there are any linting errors.
- Install the packages:
npm install --save-dev lint-prepush husky
- Add the following to
package.json
:
"husky": {
"hooks": {
"pre-push": "lint-prepush"
}
},
"lint-prepush": {
"base": "master",
"tasks": {
"*.js": [
"eslint"
]
}
},
Enable format on save capabilities in VSCode using the Juni linting config.
Add the following to ./.vscode/settings.json
:
// enables VSCode's default formatter
"editor.formatOnSave": true,
// disables the default formatter for all Javascript files. This will be handled by the Juni eslint config.
"[javascript]": {
"editor.formatOnSave": false
},
"[javascriptreact]": {
"editor.formatOnSave": false
},
"[typescript]": {
"editor.formatOnSave": false
},
"[typescriptreact]": {
"editor.formatOnSave": false
},
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
// If you have the VSCode-prettier plugin, it will be disabled for Javascript files in favor of the prettier config in Juni's eslint config.
"prettier.disableLanguages": [
"javascript",
"javascriptreact"
],
"eslint.alwaysShowStatus": true
# run only once to install publishing tool
npm i np -g
np --no-tests
npm run release