vite-plugin-assemblerjs
v0.1.2
Published
Vite plugin for seamless AssemblerJS integration with auto-configuration
Maintainers
Readme
vite-plugin-assemblerjs
A Vite plugin for seamless AssemblerJS integration with zero-configuration.
Features
- ✅ Auto-configure SWC - Automatically sets up decorator metadata transformation
- ✅ Auto-inject reflect-metadata - No need to manually import at entry point
- ✅ Zero Configuration - Works out of the box with sensible defaults
- 🔧 Customizable - Override any option as needed
Installation
npm install vite-plugin-assemblerjs --save-devyarn add vite-plugin-assemblerjs --devUsage
Basic Setup
// vite.config.ts
import { defineConfig } from 'vite';
import assemblerjs from 'vite-plugin-assemblerjs';
export default defineConfig({
plugins: [
assemblerjs()
]
});That's it! No need to:
- ❌ Manually configure SWC
- ❌ Import
reflect-metadatain your code - ❌ Set up decorator metadata transformation
Advanced Configuration
// vite.config.ts
import { defineConfig } from 'vite';
import assemblerjs from 'vite-plugin-assemblerjs';
export default defineConfig({
plugins: [
assemblerjs({
// SWC configuration
swc: {
enabled: true, // Default: true
target: 'es2021', // Default: 'es2021'
keepClassNames: true, // Default: true (required for DI)
},
// reflect-metadata injection
reflectMetadata: {
autoInject: true, // Default: true
injectMode: 'entry', // 'entry' | 'inline' | 'manual'
}
})
]
});Configuration Options
swc
Configure SWC transformation behavior:
enabled(boolean, default:true) - Enable automatic SWC configurationtarget(string, default:'es2021') - Target ECMAScript versionkeepClassNames(boolean, default:true) - Preserve class names (critical for DI)
reflectMetadata
Configure reflect-metadata injection:
autoInject(boolean, default:true) - Automatically inject reflect-metadatainjectMode('entry' | 'inline' | 'manual', default:'entry') - How to inject:entry: Inject at application entry point (recommended)inline: Inline in the bundlemanual: No automatic injection (you manage it)
How It Works
- SWC Configuration: The plugin automatically configures
@rollup/plugin-swcwith the correct settings for AssemblerJS decorators - Metadata Injection: Injects
reflect-metadatapolyfill at build time - Zero Config: Everything just works without manual setup
Example Project
// src/main.ts
// No need to import 'reflect-metadata'!
import { Assemblage, Assembler } from 'assemblerjs';
@Assemblage()
class Logger {
log(message: string) {
console.log(message);
}
}
@Assemblage({
inject: [[Logger]]
})
class App {
constructor(private logger: Logger) {}
start() {
this.logger.log('App started!');
}
}
const app = Assembler.build(App);
app.start();Requirements
- Vite: >= 5.0.0
- AssemblerJS: >= 1.0.0
- Node.js: >= 18.12.0
License
MIT
