Eslint Config for Javascript Project
This package provides Eslint's Config for Javascript Project.
Note 1: Only support the new Eslint flat config.
Note 2: This config is using the Airbnb eslint config.
Usage
1. Install package
pnpm add -D @lcbase/eslint-config-js eslint
eslint.config.js
. Please read more about Eslint Flat Config
2. Add config to your import { baseConfig } from '@lcbase/eslint-config-js';
export default baseConfig;
package.json
.
3. Add script to your {
"scripts": {
"lint": "eslint \"src/**/*.js\"",
"lint:fix": "pnpm lint"
}
}
@lcbase/prettier-config packages
4. Combine withpnpm add -D prettier @lcbase/prettier-config
{
"prettier": "@lcbase/prettier-config",
"scripts": {
"lint": "eslint \"src/**/*.js\"",
"lint:fix": "pnpm lint",
"prettify": "prettier src --check",
"prettify:fix": "prettier src --write",
"format": "pnpm prettify:fix && pnpm lint:fix"
}
}
VScode
.
5. Configuration your In root your project's folder. Create .vscode
folder with structure:
.vscode
- settings.json
{
"eslint.experimental.useFlatConfig": true,
// if mono-repo remove below line comment
// "eslint.workingDirectories": [{ "pattern": "./apps/*/" }, { "pattern": "./packages/*/" }],
"eslint.options": {
"overrideConfigFile": "eslint.config.js"
},
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
}
6. Setup git hooks
- Install packages and global setup
husky
,lint-staged
.
pnpm add -D husky lint-staged
npx husky install
npm pkg set scripts.prepare="husky install"
npx husky add .husky/pre-commit "npx lint-staged"
- Add the following to your
package.json
:
{
"scripts": {
"prepare": "husky install"
},
"lint-staged": {
"*.{js,cjs,mjs,jsx,cjsx,mjsx,ts,mts,cts,tsx,mtsx,ctsx}": ["pnpm format"],
"*.{json,css,md,html}": ["pnpm prettify:fix"]
}
}
Extends
You can extends this config by:
import { extendBaseConfig } from '@lcbase/eslint-config-js';
const config = extendBaseConfig({
files: (Linter.FlatConfigFileSpec | Linter.FlatConfigFileSpec[])[] | undefined, // files that you want to lint
extendConfig: Linter.FlatConfig | Linter.FlatConfig[] | undefined, // your override extends config here
hasImport: boolean, // true if you want to use default eslint-plugin-import.
});
export default config;