When to use this skill
Use this skill whenever the user wants to:
- Bundle JavaScript libraries with tree shaking and multi-format output (ESM/CJS/UMD)
- Configure Rollup input, output, plugins, and external dependencies
- Optimize bundle size with code splitting and dead code elimination
- Build libraries for npm distribution
How to use this skill
Workflow
- Configure — create
rollup.config.jswith input, output, and plugins - Build — run
rollup -cto generate bundles - Validate — check output formats, bundle size, and tree shaking effectiveness
- Publish — set
main,module, andexportsinpackage.json
Quick Start Example
// rollup.config.js
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import terser from '@rollup/plugin-terser';
export default {
input: 'src/index.js',
output: [
{
file: 'dist/index.cjs.js',
format: 'cjs',
sourcemap: true,
},
{
file: 'dist/index.esm.js',
format: 'es',
sourcemap: true,
},
],
external: ['react', 'react-dom'], // Don't bundle peer deps
plugins: [
resolve(),
commonjs(),
terser(), // Minify for production
],
};
# Build
npx rollup -c
# Watch mode for development
npx rollup -c --watch
// package.json — library distribution fields
{
"main": "dist/index.cjs.js",
"module": "dist/index.esm.js",
"exports": {
".": {
"import": "./dist/index.esm.js",
"require": "./dist/index.cjs.js"
}
},
"files": ["dist"],
"sideEffects": false
}
Code Splitting Example
// Dynamic imports create separate chunks
export default {
input: 'src/index.js',
output: {
dir: 'dist',
format: 'es',
chunkFileNames: 'chunks/[name]-[hash].js',
},
plugins: [resolve(), commonjs()],
};
Best Practices
- Mark peer dependencies as
externalto avoid bundling them - Enable sourcemaps for debugging; disable in production if not needed
- Use
sideEffects: falseinpackage.jsonto enable maximum tree shaking - For large dependencies, externalize them to reduce bundle size
- Use code splitting with dynamic
import()for on-demand loading
Reference
- Official documentation: https://rollupjs.org/
Keywords
rollup, bundler, ESM, CJS, tree-shaking, code splitting, library bundling, plugins