vite-plugin-java
v0.2.1
Published
A Vite plugin for Java
Readme
Vite Plugin for Java (Spring MVC)
This is a Vite plugin for integrating Java (Spring MVC) projects with Vite. Inspired by the laravel/vite-plugin, it provides functionalities to handle assets, configuration, and development server setup tailored for Java projects.
Features
- Supports multiple entry points
- Customizable public and build directories
- Configurable TypeScript compiler (esbuild or swc)
- Hot module replacement support
- Automatic configuration based on environment variables
Installation
npm install --save-dev vite-plugin-javaUsage
Configuration
Create a vite.config.js file in your project's root directory:
import { defineConfig } from 'vite'
import java from 'vite-plugin-java'
export default defineConfig({
plugins: [
java({
input: 'src/main.ts',
publicDirectory: 'public',
buildDirectory: 'build',
outputDirectory: 'dist',
tsCompiler: 'esbuild',
swcOptions: {
jsc: {
target: 'es2015'
}
},
hotFile: 'public/hot',
transformOnServe: (code, url) => code.replace('__PLACEHOLDER__', url)
})
]
})Options
| Option | Type | Default | Description |
|--------------------|-----------------------------------------------|-----------------|------------------------------------------------------------|
| input | string | string[] | { [entryAlias: string]: string } | Required | Entry points to compile |
| publicDirectory | string | 'public' | Directory for public assets |
| buildDirectory | string | 'build' | Subdirectory where compiled assets should be written |
| outputDirectory | string | 'dist' | Directory where the bundle should be written |
| tsCompiler | 'esbuild' | 'swc' | 'esbuild' | @experimental TypeScript compiler to use |
| swcOptions | SwcOptions | {} | @experimental Options to pass to the SWC compiler |
| hotFile | string | false | 'public/hot' | Path to the "hot" file. Set to false to disable |
| transformOnServe | (code: string, url: DevServerUrl) => string | code => code | Transform the code while serving |
Example
import java from 'vite-plugin-java'
export default {
plugins: [
java({
input: {
main: 'src/main.ts',
admin: 'src/admin.ts'
},
publicDirectory: 'static',
buildDirectory: 'assets',
outputDirectory: 'build',
hotFile: 'static/hot',
transformOnServe: (code, url) => code.replace('__VITE_URL__', url)
})
]
}API
java(config: string | string[] | VitePluginJavaConfig): [JavaPlugin, ...Plugin[]]
Initializes the Java plugin with the provided configuration.
Types
VitePluginJavaConfig
export interface VitePluginJavaConfig {
input: string | string[] | { [entryAlias: string]: string }
publicDirectory?: string
buildDirectory?: string
outputDirectory?: string
tsCompiler?: SupportedTSCompiler
swcOptions?: SwcOptions
hotFile?: string | false
transformOnServe?: (code: string, url: DevServerUrl) => string
}
export type SupportedTSCompiler = 'esbuild' | 'swc'
export type DevServerUrl = `${'http' | 'https'}://${string}:${number}`Contributing
Contributions are welcome! Please open an issue or submit a pull request.
License
This project is licensed under the MIT License.
Acknowledgements
Inspired by laravel/vite-plugin.
