@lcbase/eslint-config-sveltets
v2.1.0
Published
Shared Eslint SvelteTs config
Downloads
3
Readme
Eslint Config for Svelte TS Project
This package provides Eslint's Config for Svelte TS 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-sveltets
2. Add config to your eslint.config.js
. Please read more about Eslint Flat Config
import { baseSvelteTsConfig } from '@lcbase/eslint-config-sveltets';
export default baseSvelteTsConfig;
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",
"**/*.svelte"
]
}
4. Add script to your package.json
.
{
"scripts": {
"lint": "eslint \"src/**/*.{ts,svelte}\"",
"lint:fix": "pnpm lint"
}
}
5. Combine with @lcbase/prettier-config-svelte packages
pnpm add -D prettier @lcbase/prettier-config-svelte
{
"prettier": "@lcbase/prettier-config-svelte",
"scripts": {
"lint": "eslint \"src/**/*.{js,svelte}\"",
"lint:fix": "pnpm lint",
"prettify": "prettier src --check",
"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,
"[svelte]": {
"editor.defaultFormatter": "svelte.svelte-vscode"
},
"eslint.validate": ["javascript", "javascriptreact", "svelte"],
"prettier.documentSelectors": ["**/*.svelte"]
}
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 { extendBaseSvelteTsConfig } from '@lcbase/eslint-config-sveltets';
const config = extendBaseSvelteTsConfig({
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;