К основному содержанию
скилл CX Codex

rollup-bundler — скилл для Claude Code: сборка библиотек на Rollup

Скилл задаёт агенту правила конфигурации Rollup.js: форматы вывода, внешние зависимости, tree-shaking и плагины для сборки библиотек.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Mindrally/skills --skill rollup-bundler -a claude-code
Открыть на GitHub

Что делает rollup-bundler

Скилл превращает агента в знатока Rollup.js. Он подсказывает, как собрать конфиг rollup.config.mjs, какие форматы вывода выбрать — esm, cjs, umd или iife — и как развести их по нескольким output-объектам. Отдельно разбирается тема внешних зависимостей: peer-зависимости и dependencies из package.json помечаются как external, чтобы они не попали в бандл.

Внутри — готовые примеры подключения плагинов: @rollup/plugin-node-resolve, @rollup/plugin-commonjs, @rollup/plugin-babel, @rollup/plugin-typescript, @rollup/plugin-terser и @rollup/plugin-replace. Есть разделы про code splitting с несколькими точками входа и динамическими импортами, про аннотации /*#__PURE__*/ и поле sideEffects для лучшего tree-shaking, а также про watch-режим и команду rollup -c -w.

Скилл советует не бандлить peer-зависимости и не тащить CommonJS туда, где есть ES-модули. Для библиотек с TypeScript он напоминает про файлы деклараций — без них типы у потребителей не подхватятся. Конфигурация рассчитана на Node.js и установленный Rollup; для анализа размера бандла упоминается rollup-plugin-visualizer.

Скилл лежит в репозитории Mindrally/skills и ставится одной командой под нужную платформу.

Какие задачи решает

  • собрать библиотеку сразу в esm, cjs и umd
  • вынести react и lodash в external, чтобы не раздувать бандл
  • настроить @rollup/plugin-typescript с отдельным tsconfig.json
  • включить tree-shaking через именованные экспорты и sideEffects
  • разбить пакет на несколько точек входа с общим кодом

Примеры запросов агенту

  • Настрой rollup.config.mjs для библиотеки: вход src/index.ts, выходы esm и cjs со sourcemap
  • Помоги вынести peer-зависимости из package.json в external и добавь globals для UMD-сборки
  • Добавь в конфиг watch-режим с include: 'src/**' и подключи @rollup/plugin-terser

Как установить rollup-bundler

1Через Skills CLI (Vercel)

npx skills add Mindrally/skills --skill rollup-bundler -a claude-code

2Вручную: положить файлы

~/.claude/skills/rollup-bundler/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/rollup-bundler/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о rollup-bundler

Как установить rollup-bundler в Claude?

Выполните npx skills add Mindrally/skills --skill rollup-bundler -a claude-code. Скилл появится в ~/.claude/skills/rollup-bundler/SKILL.md.

Что делает rollup-bundler?

Даёт агенту правила конфигурации Rollup.js: форматы вывода, плагины, внешние зависимости, code splitting и tree-shaking. Пригодится при сборке библиотек и пакетов.

Для каких платформ подходит этот скилл?

Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI и OpenCode. Для каждой платформы своя команда установки и свой путь к SKILL.md.

Исходный текст

SKILL.md · Apache-2.0
---
name: rollup-bundler
description: Best practices and guidelines for Rollup.js module bundler configuration, ES modules, and library bundling
metadata:
  maintainer: Mindrally
  source: https://github.com/Mindrally/skills
---

# Rollup Bundler

You are an expert in Rollup.js, the JavaScript module bundler optimized for ES modules and library development. Follow these guidelines when working with Rollup configurations.

## Core Principles

- Rollup is designed for ES modules and produces cleaner, smaller bundles
- Superior tree-shaking through deep execution path analysis
- Ideal for libraries and packages that will be consumed by other projects
- Focus on producing efficient, readable output code

## Project Structure

```
project/
├── src/
│   ├── index.js          # Main entry point
│   ├── modules/          # Internal modules
│   └── utils/            # Utility functions
├── dist/                 # Build output
│   ├── bundle.esm.js     # ES module format
│   ├── bundle.cjs.js     # CommonJS format
│   └── bundle.umd.js     # UMD format
├── rollup.config.mjs     # Configuration file
└── package.json
```

## Configuration Basics

### Basic Configuration

```javascript
// rollup.config.mjs
export default {
  input: 'src/index.js',
  output: {
    file: 'dist/bundle.js',
    format: 'esm',
    sourcemap: true
  }
};
```

### Multiple Output Formats

```javascript
export default {
  input: 'src/index.js',
  output: [
    {
      file: 'dist/bundle.esm.js',
      format: 'esm',
      sourcemap: true
    },
    {
      file: 'dist/bundle.cjs.js',
      format: 'cjs',
      sourcemap: true
    },
    {
      file: 'dist/bundle.umd.js',
      format: 'umd',
      name: 'MyLibrary',
      sourcemap: true
    }
  ]
};
```

## Output Formats

### ES Modules (esm)

- Keeps bundle as ES module file
- Best for modern bundlers and browsers
- Supports tree-shaking in consuming projects

### CommonJS (cjs)

- For Node.js environments
- Compatible with require() syntax

### UMD (Universal Module Definition)

- Works as AMD, CJS, and IIFE
- Best for libraries that need broad compatibility

### IIFE (Immediately Invoked Function Expression)

- Self-executing function
- Suitable for script tags in browsers

## ES Modules Best Practices

### Use Named Exports

```javascript
// Prefer named exports for better tree-shaking
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;

// Avoid default exports when possible
// export default { add, subtract }; // Less tree-shakeable
```

### Static Imports

```javascript
// Static imports enable tree-shaking
import { specificFunction } from './utils';

// Avoid dynamic requires in library code
// const utils = require('./utils'); // CommonJS - no tree-shaking
```

## Essential Plugins

### Node Resolve

```javascript
import resolve from '@rollup/plugin-node-resolve';

export default {
  plugins: [
    resolve({
      browser: true,
      preferBuiltins: false
    })
  ]
};
```

### CommonJS Conversion

```javascript
import commonjs from '@rollup/plugin-commonjs';

export default {
  plugins: [
    commonjs()
  ]
};
```

### Babel Transpilation

```javascript
import babel from '@rollup/plugin-babel';

export default {
  plugins: [
    babel({
      babelHelpers: 'bundled',
      presets: ['@babel/preset-env']
    })
  ]
};
```

### TypeScript Support

```javascript
import typescript from '@rollup/plugin-typescript';

export default {
  input: 'src/index.ts',
  plugins: [
    typescript({
      tsconfig: './tsconfig.json'
    })
  ]
};
```

### Minification

```javascript
import terser from '@rollup/plugin-terser';

export default {
  plugins: [
    terser()
  ]
};
```

### Environment Variables

```javascript
import replace from '@rollup/plugin-replace';

export default {
  plugins: [
    replace({
      preventAssignment: true,
      'process.env.NODE_ENV': JSON.stringify('production')
    })
  ]
};
```

## External Dependencies

### Marking Dependencies as External

```javascript
export default {
  input: 'src/index.js',
  external: ['react', 'react-dom', 'lodash'],
  output: {
    file: 'dist/bundle.js',
    format: 'esm',
    globals: {
      react: 'React',
      'react-dom': 'ReactDOM'
    }
  }
};
```

### Peer Dependencies Pattern

```javascript
import pkg from './package.json';

export default {
  external: [
    ...Object.keys(pkg.peerDependencies || {}),
    ...Object.keys(pkg.dependencies || {})
  ]
};
```

## Code Splitting

### Multiple Entry Points

```javascript
export default {
  input: {
    main: 'src/index.js',
    utils: 'src/utils/index.js'
  },
  output: {
    dir: 'dist',
    format: 'esm'
  }
};
```

### Dynamic Imports

```javascript
// Rollup handles dynamic imports automatically
async function loadModule() {
  const module = await import('./heavy-module.js');
  return module.default;
}
```

## Tree Shaking Optimization

### Pure Function Annotations

```javascript
// Mark functions as pure for better tree-shaking
export const compute = /*#__PURE__*/ createCompute();
```

### Side Effects Configuration

```json
{
  "name": "my-library",
  "sideEffects": false
}
```

## Watch Mode

```javascript
// rollup.config.mjs
export default {
  watch: {
    include: 'src/**',
    clearScreen: false
  }
};
```

Command line:

```bash
rollup -c -w
```

## Package.json Configuration

```json
{
  "name": "my-library",
  "version": "1.0.0",
  "main": "dist/bundle.cjs.js",
  "module": "dist/bundle.esm.js",
  "browser": "dist/bundle.umd.js",
  "types": "dist/index.d.ts",
  "exports": {
    ".": {
      "import": "./dist/bundle.esm.js",
      "require": "./dist/bundle.cjs.js"
    }
  },
  "files": ["dist"],
  "sideEffects": false
}
```

## Best Practices

### Do

- Use ES6 module syntax consistently
- Mark third-party dependencies as external
- Generate source maps for debugging
- Use named exports for better tree-shaking
- Test all output formats
- Use watch mode during development

### Avoid

- Bundling peer dependencies
- Using CommonJS modules when ES modules are available
- Ignoring bundle size
- Skipping TypeScript declaration files for libraries

## Common Configuration Patterns

### Library Configuration

```javascript
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import typescript from '@rollup/plugin-typescript';
import terser from '@rollup/plugin-terser';
import pkg from './package.json';

export default {
  input: 'src/index.ts',
  external: Object.keys(pkg.peerDependencies || {}),
  plugins: [
    resolve(),
    commonjs(),
    typescript({ tsconfig: './tsconfig.json' }),
    terser()
  ],
  output: [
    { file: pkg.main, format: 'cjs', sourcemap: true },
    { file: pkg.module, format: 'esm', sourcemap: true }
  ]
};
```

## Debugging and Analysis

- Use `--configDebug` flag for configuration debugging
- Generate source maps for all formats
- Use rollup-plugin-visualizer for bundle analysis
- Check output code readability

© Mindrally · Apache-2.0 · Mindrally/skills

Похожие скиллы

Всё по теме «Фронтенд и UI» →
tree-shaking patterns.dev Скилл объясняет tree shaking и подсказывает агенту, как убрать неиспользуемые экспорты из JavaScript-бандла. Пригодится, когда сборка тянет лишнее. CX Codex +1 1 400установок tsdown rolldown Скилл для сборки TypeScript и JavaScript-библиотек на основе Rolldown. Генерирует типы, собирает в ESM/CJS, оптимизирует через tree shaking и минификацию. CX Codex +1 1 500установок esbuild sanjeed5 Правило для Cursor, которое задаёт агенту порядок работы с esbuild: один конфиг вместо россыпи флагов в package.json. Пригодится, когда сборка уже есть, но её никто не может поддерживать. ★ 3 579звёзд репо bun-development sickn33 Скилл помогает вести JavaScript и TypeScript-разработку на Bun: создавать проекты, переносить код с Node.js и разбирать проблемы рантайма. CX Codex +1 2 800установок bun-macros secondsky Скилл объясняет, как выполнять JavaScript во время бандлинга и подставлять результат прямо в код. Пригодится, когда версия, git-хэш или файл нужны в сборке, а не в рантайме. CX Codex +1 385установок bundle-splitting patterns.dev Скилл учит агента делить большой JavaScript-бандл на части, чтобы быстрее рисовалась первая страница и приложение становилось интерактивным. CX Codex +1 1 500установок

Из того же набора168

viewcomfy-api-rules Помогает подключить ViewComfy API к веб-приложению на Python и FastAPI: разобрать параметры workflow, вызвать endpoint и сохранить готовые файлы. CX Codex +1 663установок salesforce-development Скилл задаёт агенту правила разработки на Salesforce: Apex, триггеры, Lightning Web Components, SOQL и метаданные. Пригодится, когда пишете код для org и хотите, чтобы агент держал стиль и лимиты платформы. CX Codex +1 659установок graphql-development Набор правил для GraphQL: схема, типизированные клиенты, интеграция с React и Next.js. Пригодится, когда агент пишет резолверы и запросы. CX Codex +1 661установок turborepo Скилл задаёт агенту правила работы с Turborepo: структура воркспейсов, turbo.json, кэш и фильтры задач. Пригодится, когда монорепо уже есть и его надо привести в порядок. CX Codex +1 658установок serverless Скилл задаёт агенту правила разработки на FastAPI в микросервисах и serverless-среде: AWS Lambda, Azure Functions, API-шлюзы. CX Codex +1 655установок convex Задаёт агенту правила работы с Convex: запросы, мутации, actions, индексы и файлы. Пригодится, когда бэкенд на Convex уже выбран. CX Codex +1 651установок lerna Скилл задаёт агенту правила Lerna: структура пакетов, версионирование, публикация и запуск скриптов в монорепозитории. CX Codex +1 650установок onchainkit Скилл для ИИ-агента, который помогает собирать onchain-приложения на OnchainKit SDK: компоненты, провайдеры, транзакции и обмен токенов. CX Codex +1 641установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой