Full-stack-skills rollup

Provides comprehensive guidance for Rollup bundler including configuration, plugins, code splitting, tree shaking, and multi-format library bundling. Use when the user asks about Rollup, needs to bundle JavaScript libraries, optimize output with tree shaking, or configure ESM/CJS builds.

install
source · Clone the upstream repo
git clone https://github.com/partme-ai/full-stack-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/partme-ai/full-stack-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/build-skills/rollup" ~/.claude/skills/partme-ai-full-stack-skills-rollup && rm -rf "$T"
manifest: skills/build-skills/rollup/SKILL.md
source content

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

  1. Configure — create
    rollup.config.js
    with input, output, and plugins
  2. Build — run
    rollup -c
    to generate bundles
  3. Validate — check output formats, bundle size, and tree shaking effectiveness
  4. Publish — set
    main
    ,
    module
    , and
    exports
    in
    package.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
    external
    to avoid bundling them
  • Enable sourcemaps for debugging; disable in production if not needed
  • Use
    sideEffects: false
    in
    package.json
    to enable maximum tree shaking
  • For large dependencies, externalize them to reduce bundle size
  • Use code splitting with dynamic
    import()
    for on-demand loading

Reference

Keywords

rollup, bundler, ESM, CJS, tree-shaking, code splitting, library bundling, plugins