Базовая конфигурация через командную строку

Rollup предоставляет полноценный интерфейс управления сборкой через командную строку, позволяющий настраивать процесс бандлинга без необходимости писать отдельный конфигурационный файл. CLI используется как для простых сценариев сборки, так и для быстрых прототипов, автоматизации и интеграции в скрипты npm.

Ключевой принцип CLI Rollup — приоритет явных параметров над конфигурацией. Любая опция, переданная через командную строку, перекрывает значения из конфигурационного файла, если он используется совместно с CLI.


Базовый запуск Rollup

Минимальный запуск сборки выполняется с указанием входного и выходного файлов:

rollup input.js --file output.js --format esm

Здесь:

  • input.js — точка входа
  • output.js — результат сборки
  • --format esm — формат модуля (ESM)

Ключевые форматы:

  • esm — ES Modules
  • cjs — CommonJS
  • iife — самовызывающаяся функция (для браузера)
  • umd — универсальный формат

Основные параметры CLI

Указание входа и выхода

rollup --input src/main.js --file dist/bundle.js --format cjs

Альтернативный короткий синтаксис:

rollup src/main.js -o dist/bundle.js -f cjs

Параметры:

  • -i, --input — входной файл или точка входа
  • -o, --output.file — выходной файл
  • -f, --format — формат сборки

Использование нескольких входных точек

Rollup поддерживает сборку нескольких модулей:

rollup --input src/main.js src/admin.js --dir dist --format esm

В этом случае используется директория вывода:

  • --dir dist — вывод в папку
  • структура входов сохраняется логически

Генерация бандла без записи на диск

Для анализа или промежуточной обработки:

rollup src/main.js --format esm --silent

Или:

rollup src/main.js --format esm --output.inlineDynamicImports

Подключение конфигурационного файла через CLI

Rollup автоматически ищет конфигурационные файлы, но их можно явно указать:

rollup --config rollup.config.js

Также поддерживаются альтернативные пути:

rollup --config ./config/rollup.prod.js

Передача параметров в конфигурацию

CLI позволяет передавать аргументы в конфигурационный файл:

rollup --config rollup.config.js --configDebug true

В конфиге:

export default (commandLineArgs) => {
  return {
    input: 'src/main.js',
    output: {
      file: 'dist/bundle.js',
      format: commandLineArgs.configDebug ? 'cjs' : 'esm'
    }
  };
};

Режим наблюдения (watch mode)

CLI поддерживает автоматическую пересборку при изменении файлов:

rollup -i src/main.js -o dist/bundle.js -f esm --watch

Особенности watch режима

  • отслеживание зависимостей
  • инкрементальная пересборка
  • минимизация полной переработки графа модулей
  • поддержка кастомных плагинов с watch hooks

Подключение плагинов через CLI

Хотя основная работа с плагинами происходит через конфигурационный файл, CLI поддерживает их загрузку через конфиг:

rollup --config

А в конфиге:

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

export default {
  input: 'src/main.js',
  output: {
    file: 'dist/bundle.js',
    format: 'esm'
  },
  plugins: [
    resolve()
  ]
};

CLI лишь активирует конфигурацию, где уже определяется цепочка плагинов.


Source maps через CLI

Для генерации карт исходников:

rollup src/main.js -o dist/bundle.js -f esm --sourcemap

Доступны варианты:

  • --sourcemap
  • --sourcemapExcludeSources
  • --sourcemapFile

Пример:

rollup src/main.js -o dist/bundle.js -f esm --sourcemap --sourcemapFile dist/bundle.js.map

Оптимизация вывода

CLI позволяет управлять оптимизацией бандла:

rollup src/main.js -o dist/bundle.js -f esm --compact

Также:

  • --minify (через плагины, например terser)
  • --treeshake (по умолчанию включен)
  • --no-treeshake — отключение tree-shaking

Пример отключения:

rollup src/main.js -o dist/bundle.js -f esm --no-treeshake

Работа с внешними зависимостями

Через CLI можно указать внешние модули:

rollup src/main.js -o dist/bundle.js -f cjs --external react

Для нескольких зависимостей:

rollup src/main.js -o dist/bundle.js -f cjs --external react,react-dom

Смысл external:

  • модуль не включается в бандл
  • ожидается, что он будет доступен в runtime

Управление глобальными переменными (IIFE/UMD)

При использовании форматов iife или umd необходимо явно задавать глобальные зависимости:

rollup src/main.js -o dist/bundle.js -f iife --name MyLib --globals react:React

Параметры:

  • --name — глобальное имя библиотеки
  • --globals — маппинг внешних зависимостей

Множественные конфигурации через CLI

Rollup поддерживает массив конфигураций:

rollup --config

Если конфиг возвращает массив:

export default [
  {
    input: 'src/main.js',
    output: {
      file: 'dist/app.esm.js',
      format: 'esm'
    }
  },
  {
    input: 'src/main.js',
    output: {
      file: 'dist/app.cjs.js',
      format: 'cjs'
    }
  }
];

CLI выполнит обе сборки последовательно.


Уровни логирования

CLI предоставляет контроль над выводом информации:

rollup src/main.js -o dist/bundle.js -f esm --silent

Доступные режимы:

  • --silent — минимум информации
  • --verbose — расширенный лог
  • стандартный режим — баланс информации

Кэширование сборки

Для ускорения повторных сборок используется кэш:

rollup --cache src/.rollup.cache.json

Кэш позволяет:

  • ускорить rebuild
  • повторно использовать граф модулей
  • уменьшить время анализа зависимостей

Переменные окружения через CLI

Rollup CLI не управляет env напрямую, но они доступны через Node.js:

NODE_ENV=production rollup -i src/main.js -o dist/bundle.js -f esm

В конфиге:

const production = process.env.NODE_ENV === 'production';

Полный пример CLI сценария сборки

rollup src/index.js \
  --file dist/bundle.js \
  --format esm \
  --sourcemap \
  --external react,react-dom \
  --name MyLibrary \
  --watch

Этот запуск объединяет:

  • входную точку
  • формат ESM
  • генерацию sourcemap
  • исключение внешних зависимостей
  • режим наблюдения

Поведение CLI при ошибках

Rollup CLI завершает процесс с кодом ошибки при:

  • отсутствии входного файла
  • невозможности разрешения модулей
  • ошибках в плагинах
  • конфликте конфигурации

Типичный вывод ошибки включает:

  • путь к файлу
  • позицию в коде
  • стек вызовов
  • описание причины

Влияние CLI на архитектуру сборки

Использование командной строки влияет на подход к конфигурации:

  • минимальные проекты часто обходятся без rollup.config.js
  • сложные проекты используют CLI только как точку запуска
  • CI/CD сценарии строятся вокруг CLI параметров
  • конфигурация становится декларативной, а CLI — управляющим слоем

CLI в Rollup выступает не как вспомогательный инструмент, а как полноценный интерфейс управления графом сборки и параметрами трансформации модулей.