@lcbase/eslint-config-ts
v2.1.0
Published
Shared Eslint Reactjs config
Downloads
2
Readme
Eslint Config for Typescript project
This package provides Eslint's Config for Typescript 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 eslint @lcbase/eslint-config-ts
2. Add config to your eslint.config.js
. Please read more about Eslint Flat Config
import { baseTsConfig } from '@lcbase/eslint-config-ts';
export default baseTsConfig;
3. Create a tsconfig.eslint.json
file in root folder
{
// extend your base config to share compilerOptions, etc
"extends": "./tsconfig.json",
"compilerOptions": {
// ensure that nobody can accidentally use this config for a build
"noEmit": true
},
"include": [
// whatever paths you intend to lint
"**/*.ts",
"**/*.tsx"
]
}
4. Add script to your package.json
.
{
"scripts": {
"lint": "eslint \"src/**/*.ts\"", // change source lint follow your structure folder
"lint:fix": "pnpm lint --fix"
}
}
5. Combine with @lcbase/prettier-config packages
pnpm add -D prettier @lcbase/prettier-config
{
"prettier": "@lcbase/prettier-config",
"scripts": {
"lint": "eslint \"src/**/*.ts\"", // change source lint follow your structure folder
"lint:fix": "pnpm lint --fix",
"prettify": "prettier src --check", // change source lint follow your structure folder
"prettify:fix": "prettier src --write",
"format": "pnpm prettify:fix && pnpm lint:fix"
}
}
6. Configuration your VScode
.
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
}
7. 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 { extendBaseTsConfig } from '@lcbase/eslint-config-ts';
const config = extendBaseTsConfig({
files: (Linter.FlatConfigFileSpec | Linter.FlatConfigFileSpec[])[] | undefined, // files that you want to lint
extendConfig: Linter.FlatConfig | Linter.FlatConfig[] | undefined, // your override extends config here
});
export default config;