Modern build tools, bundlers, and development workflows for ES Modules.
Lightning-fast development server leveraging native ES Modules with instant HMR. Vite 7 (2025) updated browser targets, and Vite 8 (2026) replaces both esbuild and Rollup with Rolldown for a unified Rust-based build pipeline.
npm create vite@latest my-app
cd my-app && npm install && npm run dev
Key Features:
Powerful module bundler with extensive plugin ecosystem.
// webpack.config.js
export default {
entry: './src/index.js',
output: { filename: 'bundle.js' },
module: {
rules: [
{ test: /\.js$/, use: 'babel-loader' }
]
}
};
Optimized for library bundling with excellent tree-shaking.
// rollup.config.js
export default {
input: 'src/index.js',
output: {
file: 'dist/bundle.js',
format: 'esm'
}
};
Full support for ES Modules with type checking.
// tsconfig.json
{
"compilerOptions": {
"module": "ESNext",
"target": "ESNext",
"moduleResolution": "bundler"
}
}
Lint ES Modules with proper import/export validation.
// eslint.config.js (flat config - ESLint 9+)
import js from '@eslint/js';
export default [
js.configs.recommended,
{
rules: {
'no-unused-vars': 'error',
'import/no-unresolved': 'error'
}
}
];
Load ES Modules directly from CDNs without build steps.
Rust-based bundler by VoidZero that unifies esbuild (dev) and Rollup (production) into a single tool. Ships as the default bundler in Vite 8, offering 10-30x speed improvement over Rollup with full plugin API compatibility.
// rolldown.config.js
export default {
input: './src/index.js',
output: {
dir: 'dist',
format: 'esm'
}
};
Rust-based webpack replacement that is 23x faster while maintaining compatibility with 40+ of the top 50 webpack plugins. Now at version 1.4 with official Next.js integration via next-rspack.
// rspack.config.js
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
module: true // ESM output
},
experiments: {
outputModule: true
}
};
Rust-based successor to webpack, now stable and the default bundler in Next.js. Designed for large-scale applications with incremental computation for near-instant rebuilds.
// next.config.js - Turbopack is now the default
/** @type {import('next').NextConfig} */
const nextConfig = {
// Turbopack enabled by default in Next.js 15+
// No configuration needed for ESM support
};
export default nextConfig;
Fast all-in-one toolchain replacing ESLint and Prettier. Includes linting, formatting, and import sorting. In 2026, Biome is adding type-aware lint rules without requiring TypeScript's compiler.
// biome.json
{
"linter": {
"rules": {
"correctness": {
"noUnusedImports": "error"
},
"style": {
"useImportType": "error"
}
}
},
"organizeImports": {
"enabled": true
}
}