@idleberg/cosby
v0.2.4
Published
Delightful esbuild configurations
Maintainers
Readme
@idleberg/cosby
Delightful esbuild configurations.
Cosby allows bundling with esbuild while using familiar configuration files, such as esbuild.config.json or esbuild.config.ts.
[!NOTE] Sounds familiar? This projects has its roots in a similar project called
cosmic-esbuild. Withcosby, the main goal was a simplified API while providing more powerful features. But let's read on!
Features
- supports multiple file formats
- extends from multiple local or git sources
- evaluates Dotenv files
- supports environment-specific configurations
- cleans up before build
Installation 💿
npm install @idleberg/cosbyUsage 🚀
Configuration
esbuild.config.jsesbuild.config.tsesbuild.config.mjsesbuild.config.cjsesbuild.config.mtsesbuild.config.ctsesbuild.config.jsonesbuild.config.jsoncesbuild.config.json5esbuild.config.yamlesbuild.config.ymlesbuild.config.toml
Using the --package-json flag, you can load the configuration from the package manifests' esbuild field.
Example of a fully typed configuration:
TypeScript
import { defineConfig } from '@idleberg/cosby';
export default defineConfig({
bundle: true,
entryPoints: ['app.js'],
outdir: 'dist',
sourcemap: 'external',
});Example of a purely declarative configuration:
JSON
{
"bundle": true,
"entryPoints": ["app.js"],
"outdir": "dist",
"sourcemap": "external"
}CLI
Run from command-line or script.
# Build
npx cosby
# Watch for changes
npx cosby --watchSee npx cosby --help for available options.
Advanced Features
Extending Configuration
In a monorepo, you often want to extend from a base configuration:
export default defineConfig({
"extends": "../base",
});Extend from a remote git source:
export default defineConfig({
"extends": "gh:user/repo#branch",
}):Dotenv
Run npx cosby --dotenv .env to load environment variables from a file:
export default defineConfig({
minify: process.env.NODE_ENV !== 'development',
})Environment-specific configuration
You can define environment-specific configuration using these config keys:
$test: {...}$development: {...}$production: {...}$env: { [env]: {...} }
Run npx cosby --env-name production to apply the overrides for production:
export default defineConfig({
minify: false,
sourcemap: 'external',
$test: {
minify: true,
},
$production: {
minify: true,
sourcemap: false,
},
})Related 👫
If this project is not for you, maybe these alternatives suit you better:
License©️
This work is licensed under The MIT License.
