@chriswa/ts-config
v0.0.6
Published
Shared TypeScript and ESLint configuration for chriswa's projects
Maintainers
Readme
@chriswa/ts-config
Shared TypeScript and ESLint configuration for chriswa's projects.
Installation
npm install --save-dev @chriswa/ts-config eslint typescript
# or
pnpm add -D @chriswa/ts-config eslint typescriptUsage
Environment-Specific Setup
Browser Projects
For browser-based projects (React, Vue, vanilla JS, etc.):
ESLint Configuration (eslint.config.js):
import baseConfig from '@chriswa/ts-config/eslint'
import globals from 'globals'
export default [
...baseConfig,
{
languageOptions: {
globals: globals.browser
}
}
]TypeScript Configuration (tsconfig.json):
{
"extends": "@chriswa/ts-config/tsconfig",
"compilerOptions": {
"lib": ["ES2022", "DOM", "DOM.Iterable"],
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["src"]
}CLI/Node Projects
For command-line tools and Node.js applications:
ESLint Configuration (eslint.config.js):
import baseConfig from '@chriswa/ts-config/eslint'
import globals from 'globals'
export default [
...baseConfig,
{
languageOptions: {
globals: globals.node
}
}
]TypeScript Configuration (tsconfig.json):
{
"extends": "@chriswa/ts-config/tsconfig",
"compilerOptions": {
"lib": ["ES2022"],
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["src"]
}General Usage
For basic usage without environment-specific globals:
ESLint Configuration (eslint.config.js):
import baseConfig from '@chriswa/ts-config/eslint'
export default baseConfigTo customize rules:
import baseConfig from '@chriswa/ts-config/eslint'
export default [
...baseConfig,
{
rules: {
'no-console': 'off', // Override specific rules
},
},
]TypeScript Configuration (tsconfig.json):
{
"extends": "@chriswa/ts-config/tsconfig",
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["src"]
}Package.json Scripts
Add these scripts to your package.json:
{
"scripts": {
"typecheck": "tsc --noEmit",
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"format": "eslint . --fix",
"format:check": "eslint ."
}
}Features
ESLint Rules Include:
- TypeScript: Strict type checking, consistent imports/exports
- Stylistic: Single quotes, no semicolons, trailing commas on multiline
- Import Management: Sorted imports, no relative imports (enforces @/ aliases)
- Promise Handling: Async/await best practices
- Unicorn: Modern JavaScript patterns
- RegExp: Regular expression safety
TypeScript Configuration:
- Strict Mode: All strict checks enabled
- Modern Target: ES2022 with bundler resolution
- Extra Safety: Unchecked indexed access, exact optional properties
- Isolated Modules: Compatible with bundlers like Vite
Example Project
See the example/ directory for a complete setup showing how to configure a new project.
Publishing
To publish this package:
- Update version in
package.json - Run
npm publish(orpnpm publish)
License
MIT
