2.4 KiB
2.4 KiB
Package.json Configuration Reference
Complete Scripts and Lint-Staged Configuration
Add these sections to your package.json:
{
"name": "your-project",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "eslint . --max-warnings 0",
"lint:fix": "eslint . --fix",
"format": "prettier --write .",
"format:check": "prettier --check .",
"prepare": "husky"
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --fix",
"prettier --write"
],
"*.{json,md,yml,yaml,css,scss}": [
"prettier --write"
]
},
"devDependencies": {
"eslint": "^9.0.0",
"@eslint/js": "^9.0.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-react": "^7.35.0",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-jsx-a11y": "^6.9.0",
"@typescript-eslint/parser": "^7.0.0",
"@typescript-eslint/eslint-plugin": "^7.0.0",
"typescript-eslint": "^7.0.0",
"prettier": "^3.3.0",
"husky": "^9.0.0",
"lint-staged": "^15.2.0"
}
}
Script Descriptions
- lint: Runs ESLint on entire codebase with zero warning tolerance (fails CI on warnings)
- lint:fix: Automatically fixes ESLint issues where possible
- format: Formats all files in project with Prettier
- format:check: Checks formatting without modifying files (good for CI)
- prepare: npm lifecycle hook that runs after
npm installto set up Husky
Lint-Staged Configuration
The lint-staged object defines which commands run on which file types during pre-commit:
- JavaScript/TypeScript files: Run ESLint with auto-fix, then Prettier
- Other files (JSON, Markdown, YAML, CSS): Run only Prettier
Adding Type Checking
For stricter pre-commit checks, add TypeScript type checking:
{
"lint-staged": {
"*.{ts,tsx}": [
"eslint --fix",
"prettier --write",
"bash -c 'tsc --noEmit'"
],
"*.{js,jsx}": [
"eslint --fix",
"prettier --write"
]
}
}
Note: Type checking all staged files can slow down commits. Consider using it selectively.
Adding Tests
To run tests on staged files:
{
"lint-staged": {
"*.{ts,tsx,js,jsx}": [
"eslint --fix",
"prettier --write",
"jest --bail --findRelatedTests"
]
}
}
The --findRelatedTests flag runs only tests related to changed files.