@carnil/config
v1.1.1
Published
Shared tooling configuration for Carnil SDK packages
Readme
@carnil/config
Shared tooling configuration for Carnil SDK packages. This package provides standardized ESLint, TypeScript, Prettier, Vitest, and TSUP configurations used across all Carnil packages.
Features
- 🔧 Standardized Configurations - Consistent tooling across all packages
- 📝 ESLint Rules - Optimized for TypeScript and React development
- 🎨 Prettier Formatting - Consistent code formatting
- 📘 TypeScript Config - Base TypeScript configuration
- 🧪 Vitest Setup - Testing configuration
- 📦 TSUP Build - Modern bundling configuration
Installation
npm install @carnil/config --save-devUsage
ESLint Configuration
// eslint.config.js
import carnilEslint from "@carnil/config/eslint";
export default carnilEslint;TypeScript Configuration
// tsconfig.json
{
"extends": "@carnil/config/typescript",
"compilerOptions": {
"outDir": "./dist"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}Prettier Configuration
// .prettierrc.json
{
"extends": "@carnil/config/prettier"
}Vitest Configuration
// vitest.config.ts
import { defineConfig } from "vitest/config";
import carnilVitest from "@carnil/config/vitest";
export default defineConfig({
...carnilVitest,
test: {
...carnilVitest.test,
// Your custom test config
},
});TSUP Configuration
// tsup.config.ts
import { defineConfig } from "tsup";
import carnilTsup from "@carnil/config/tsup";
export default defineConfig({
...carnilTsup,
entry: ["src/index.ts"],
// Your custom build configuration
});Available Configurations
ESLint (@carnil/config/eslint)
Provides ESLint configuration optimized for:
- TypeScript projects
- React components
- Modern JavaScript features
- Import/export rules
- Accessibility best practices
TypeScript (@carnil/config/typescript)
Base TypeScript configuration with:
- Strict type checking
- Modern ES features
- Module resolution
- Declaration file generation
Prettier (@carnil/config/prettier)
Code formatting rules:
- 2-space indentation
- Single quotes
- Trailing commas
- Semicolons
- Print width: 80 characters
Vitest (@carnil/config/vitest)
Testing configuration:
- TypeScript support
- Coverage reporting
- Test environment setup
- Mock utilities
TSUP (@carnil/config/tsup)
Build configuration:
- ESM and CommonJS output
- TypeScript compilation
- Source maps
- Declaration files
- Tree shaking
Package.json Scripts
Add these scripts to your package.json:
{
"scripts": {
"build": "tsup",
"dev": "tsup --watch",
"test": "vitest --passWithNoTests",
"test:coverage": "vitest --coverage",
"lint": "eslint src --ext .ts,.tsx",
"lint:fix": "eslint src --ext .ts,.tsx --fix",
"format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"",
"format:check": "prettier --check \"src/**/*.{ts,tsx,js,jsx,json,md}\"",
"type-check": "tsc --noEmit",
"clean": "rm -rf dist"
}
}IDE Integration
VS Code Settings
Create .vscode/settings.json:
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"typescript.preferences.importModuleSpecifier": "relative"
}Recommended Extensions
- ESLint
- Prettier - Code formatter
- TypeScript Importer
- Vitest
Customization
You can extend or override any configuration:
// Custom ESLint config
import carnilEslint from "@carnil/config/eslint";
export default [
...carnilEslint,
{
rules: {
// Your custom rules
"@typescript-eslint/no-unused-vars": "error",
},
},
];Version Management
This package uses automatic version bumping on every push to the main branch:
- Patch version (1.0.2 → 1.0.3) is automatically incremented on each commit
- The version bump is committed back to the repository
- Package is automatically published to both npm and GitHub Packages
Manual Version Control
For major or minor version bumps, use these commands:
# Patch version (automatic on push)
npm run version:patch
# Minor version (new features)
npm run version:minor
# Major version (breaking changes)
npm run version:majorContributing
When contributing to this package:
- Test configuration changes across multiple packages
- Ensure backward compatibility
- Update documentation for new features
- Follow semantic versioning
- No need to manually bump versions - it's automatic!
License
MIT © Carnil Team
