@dbs-portal/tool-build
v1.0.0
Published
Build utilities and configurations for DBS Portal monorepo
Readme
@dbs-portal/tool-build
Build utilities and configurations for DBS Portal monorepo packages.
Features
- 🏗️ Vite Configuration Factory: Pre-configured Vite setups for apps and libraries
- 📦 Library Build Support: Optimized configurations for package libraries
- 📊 Bundle Analysis: Tools to analyze and optimize bundle sizes
- 🎨 Asset Optimization: Image, CSS, and JavaScript optimization utilities
- 🌍 Environment Management: Configuration management for different environments
Installation
yarn add @dbs-portal/tool-buildUsage
Vite Configuration
// vite.config.ts
import { createViteConfig } from '@dbs-portal/tool-build'
export default createViteConfig({
type: 'app',
features: ['react', 'tailwind'],
optimization: 'production'
})Library Configuration
// vite.config.ts for a library package
import { createLibraryConfig } from '@dbs-portal/tool-build/library-config'
export default createLibraryConfig({
name: 'MyLibrary',
entry: 'src/index.ts',
formats: ['es', 'cjs']
})Bundle Analysis
import { bundleAnalyzer } from '@dbs-portal/tool-build'
const analysis = await bundleAnalyzer('./dist')
console.log(analysis.generateReport())Asset Optimization
import { assetOptimizer } from '@dbs-portal/tool-build'
const optimizer = await assetOptimizer({
images: { quality: 80, formats: ['webp', 'jpeg'] },
css: { purge: true, minify: true },
js: { minify: true, treeshake: true }
})
await optimizer.optimizeImages(['./src/assets/*.jpg'])Environment Management
import { envManager } from '@dbs-portal/tool-build'
// Load from environment variables
envManager.loadFromEnv()
// Check feature flags
if (envManager.isFeatureEnabled('NEW_FEATURE')) {
// Enable new feature
}
// Get Vite environment variables
const viteEnv = envManager.getViteEnv()Presets
Application Presets
import { presets } from '@dbs-portal/tool-build/vite-config'
// React application with Tailwind
export default presets.reactApp()
// React application with custom options
export default presets.reactApp({
optimization: 'production',
analyze: true
})Library Presets
import { libraryPresets } from '@dbs-portal/tool-build/library-config'
// Core utility library
export default libraryPresets.core('MyUtilLibrary')
// React component library
export default libraryPresets.reactComponent('MyComponentLibrary')
// Business module
export default libraryPresets.module('MyModule')Configuration Options
ViteConfigOptions
interface ViteConfigOptions {
type: 'app' | 'library'
features?: ('react' | 'tailwind' | 'router' | 'query')[]
optimization?: 'development' | 'production'
analyze?: boolean
sourcemap?: boolean
minify?: boolean
target?: string
outDir?: string
publicDir?: string
base?: string
}LibraryConfigOptions
interface LibraryConfigOptions {
name: string
entry: string
formats?: ('es' | 'cjs' | 'umd' | 'iife')[]
external?: string[]
globals?: Record<string, string>
fileName?: string | ((format: string) => string)
cssCodeSplit?: boolean
emptyOutDir?: boolean
}Environment Variables
The environment manager supports the following variables:
NODE_ENV: Environment mode (development, production, test)API_BASE_URL: Base URL for API callsAPP_NAME: Application nameAPP_VERSION: Application versionFEATURE_*: Feature flags (e.g.,FEATURE_NEW_UI=true)
Bundle Size Limits
Default bundle size limits:
- Total bundle: 500KB
- Gzipped bundle: 100KB
Override with bundle analysis:
const { passed, issues } = analyzer.checkSizeRequirements(
1024 * 1024, // 1MB total
200 * 1024 // 200KB gzipped
)License
MIT
