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

parcel-bundler — скилл для Claude Code: правила работы с Parcel

Скилл задаёт агенту правила работы со сборщиком Parcel: точки входа, TypeScript, CSS-модули, кэш и продакшен-сборка. Пригодится, когда проект собирается без конфига.

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

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

Скилл описывает Parcel как сборщик без конфигурации: агент получает набор правил, по которым пишет и правит код проекта. Внутри — структура каталогов с src/ и dist/, точки входа в HTML и JavaScript, скрипты dev, build и clean в package.json.

Отдельные разделы посвящены TypeScript и React: Parcel сам подхватывает .ts, .tsx и JSX, а sass доустанавливается автоматически при импорте .scss. Есть разбор переменных окружения через .env, dev-сервера с горячей заменой модулей, проксирования запросов к API и продакшен-сборки с флагами --dist-dir, --public-url и --no-source-maps.

Про кэш сказано прямо: он агрессивный, и при странных ошибках сборки первым делом чистят .parcel-cache. Конфигурацию скилл советует трогать только тогда, когда значений по умолчанию не хватает — .parcelrc и блок targets описаны как исключение, а не как норма. Текст скилла обрывается на разделе о лучших практиках, поэтому про плагины и публикацию библиотек там есть только начало.

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

  • настроить точки входа и скрипты сборки в package.json
  • подключить TypeScript и JSX без ручной настройки сборщика
  • разбить код на чанки через динамические импорты
  • пробросить переменные окружения из .env в код
  • почистить кэш, когда сборка ведёт себя странно

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

  • Настрой сборку Parcel для src/index.html: скрипты dev и build в package.json
  • Добавь в проект CSS-модули и подключи их к компоненту кнопки
  • Собери продакшен-версию в build с public-url /app/ и без source maps

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

1Через Skills CLI (Vercel)

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

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

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

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

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

Вопросы о parcel-bundler

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

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

Что делает скилл parcel-bundler?

Задаёт агенту правила работы с Parcel: структура проекта, точки входа, TypeScript, React, CSS-модули, dev-сервер, переменные окружения и продакшен-сборка.

Нужен ли конфиг для Parcel?

Скилл отталкивается от нулевой конфигурации и советует не переопределять значения по умолчанию. .parcelrc и блок targets в package.json описаны для случаев, когда стандартного поведения не хватает.

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

SKILL.md · Apache-2.0
---
name: parcel-bundler
description: Best practices and guidelines for Parcel, the zero-configuration web application bundler
metadata:
  maintainer: Mindrally
  source: https://github.com/Mindrally/skills
---

# Parcel Bundler

You are an expert in Parcel, the zero-configuration build tool for the web. Follow these guidelines when working with Parcel projects.

## Core Principles

- Zero configuration by default - Parcel works out of the box
- Automatic dependency detection and installation
- Built-in development server with hot module replacement
- Native performance with Rust-based compiler
- Automatic code splitting and optimization

## Project Structure

```
project/
├── src/
│   ├── index.html        # HTML entry point
│   ├── index.js          # JavaScript entry
│   ├── styles.css        # Stylesheets
│   └── assets/           # Images, fonts, etc.
├── dist/                 # Build output (auto-generated)
├── .parcelrc             # Optional configuration
└── package.json
```

## Getting Started

### Basic Usage

```bash
# Development with hot reload
parcel src/index.html

# Production build
parcel build src/index.html
```

### Package.json Scripts

```json
{
  "scripts": {
    "dev": "parcel src/index.html",
    "build": "parcel build src/index.html",
    "clean": "rm -rf dist .parcel-cache"
  },
  "source": "src/index.html"
}
```

## Entry Points

### HTML Entry

```html
<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="./styles.css">
</head>
<body>
  <div id="app"></div>
  <script type="module" src="./index.js"></script>
</body>
</html>
```

### JavaScript Entry

```bash
parcel build src/index.js --dist-dir lib
```

### Multiple Entry Points

```bash
parcel build src/index.html src/admin.html
```

## Supported Languages and File Types

Parcel supports out of the box:

- **JavaScript/TypeScript**: `.js`, `.jsx`, `.ts`, `.tsx`, `.mjs`
- **Styles**: `.css`, `.scss`, `.sass`, `.less`, `.styl`
- **HTML**: `.html`, `.htm`
- **Images**: `.png`, `.jpg`, `.gif`, `.svg`, `.webp`
- **Fonts**: `.woff`, `.woff2`, `.ttf`, `.otf`, `.eot`
- **Data**: `.json`, `.yaml`, `.toml`, `.xml`
- **WebAssembly**: `.wasm`

## Configuration (When Needed)

### .parcelrc

```json
{
  "extends": "@parcel/config-default",
  "transformers": {
    "*.svg": ["@parcel/transformer-svg-react"]
  },
  "reporters": ["...", "parcel-reporter-bundle-analyzer"]
}
```

### package.json Targets

```json
{
  "targets": {
    "main": {
      "source": "src/index.js",
      "distDir": "dist",
      "context": "browser",
      "outputFormat": "esm"
    }
  }
}
```

## TypeScript Support

### Automatic Configuration

Parcel handles TypeScript automatically. Just use `.ts` or `.tsx` files.

### tsconfig.json

```json
{
  "compilerOptions": {
    "target": "ESNext",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "jsx": "react-jsx",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "isolatedModules": true
  }
}
```

## React Support

### Automatic JSX

```jsx
// Parcel handles JSX automatically
import { useState } from 'react';

function App() {
  const [count, setCount] = useState(0);
  return <button onClick={() => setCount(c => c + 1)}>{count}</button>;
}
```

## CSS and Styling

### CSS Imports

```javascript
import './styles.css';
```

### CSS Modules

```javascript
import * as styles from './Button.module.css';

function Button() {
  return <button className={styles.primary}>Click me</button>;
}
```

### Sass/SCSS

```javascript
import './styles.scss';
```

Parcel installs `sass` automatically when you use `.scss` files.

## Asset Handling

### Importing Assets

```javascript
import logo from './logo.png';
import data from './data.json';

// Use in JSX
<img src={logo} alt="Logo" />
```

### URL References

```javascript
const imageUrl = new URL('./image.png', import.meta.url);
```

## Code Splitting

### Dynamic Imports

```javascript
// Automatic code splitting
const LazyComponent = React.lazy(() => import('./LazyComponent'));

// Or manual
async function loadModule() {
  const module = await import('./heavy-module.js');
  return module.default;
}
```

### Shared Bundles

Parcel automatically creates shared bundles for code used across multiple entry points.

## Environment Variables

### .env Files

```
# .env
API_URL=https://api.example.com
```

```
# .env.production
API_URL=https://api.production.com
```

### Usage in Code

```javascript
const apiUrl = process.env.API_URL;
```

### Defining in package.json

```json
{
  "targets": {
    "default": {
      "publicUrl": "/my-app/"
    }
  }
}
```

## Development Server

### Default Configuration

```bash
parcel src/index.html
# Serves at http://localhost:1234
```

### Custom Port

```bash
parcel src/index.html --port 3000
```

### HTTPS

```bash
parcel src/index.html --https
```

### Proxy API Requests

```json
{
  "devServer": {
    "proxy": {
      "/api": {
        "target": "http://localhost:8080"
      }
    }
  }
}
```

## Production Build

### Basic Build

```bash
parcel build src/index.html
```

### Output Configuration

```bash
parcel build src/index.html --dist-dir build --public-url /app/
```

### No Source Maps

```bash
parcel build src/index.html --no-source-maps
```

## Optimization

### Automatic Optimizations

Parcel automatically:
- Minifies JavaScript, CSS, HTML, and SVG
- Compresses images
- Generates content hashes for caching
- Tree-shakes unused code
- Scope hoists modules

### Bundle Analysis

```bash
npm install -D parcel-reporter-bundle-analyzer

# Add to .parcelrc
{
  "extends": "@parcel/config-default",
  "reporters": ["...", "parcel-reporter-bundle-analyzer"]
}
```

## Caching

Parcel uses aggressive caching:

```bash
# Clear cache
rm -rf .parcel-cache

# Or
parcel build --no-cache
```

## Plugin Development

### Plugin Types

- **Transformers**: Transform source files
- **Resolvers**: Custom module resolution
- **Bundlers**: Custom bundling logic
- **Namers**: Custom output naming
- **Packagers**: Package bundles
- **Optimizers**: Optimize bundles
- **Reporters**: Custom build reporting

### Plugin Rules

1. **Stateless**: Avoid internal state
2. **Pure**: Same input produces same output
3. **No side effects**: Don't modify external state

## Library Development

### Package.json Configuration

```json
{
  "name": "my-library",
  "source": "src/index.ts",
  "main": "dist/main.js",
  "module": "dist/module.js",
  "types": "dist/types.d.ts",
  "targets": {
    "main": {
      "outputFormat": "commonjs"
    },
    "module": {
      "outputFormat": "esmodule"
    },
    "types": {
      "source": "src/index.ts"
    }
  }
}
```

## Best Practices

### Do

- Start with zero configuration
- Let Parcel handle asset optimization
- Use dynamic imports for code splitting
- Leverage automatic dependency installation
- Use CSS Modules for component styles

### Avoid

- Over-configuring when defaults work
- Fighting against Parcel's conventions
- Manually optimizing what Parcel handles
- Ignoring build warnings and errors

## Common Patterns

### Single Page Application

```html
<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>My App</title>
</head>
<body>
  <div id="root"></div>
  <script type="module" src="./index.tsx"></script>
</body>
</html>
```

### Static Site

```bash
parcel build src/*.html
```

### Web Worker

```javascript
const worker = new Worker(new URL('./worker.js', import.meta.url), {
  type: 'module'
});
```

## Troubleshooting

### Clear Cache

```bash
rm -rf .parcel-cache dist
```

### Verbose Output

```bash
parcel build --log-level verbose
```

### Debug Mode

```bash
DEBUG=parcel:* parcel build
```

## Migration from Other Bundlers

- Remove webpack.config.js or similar
- Remove loader/plugin dependencies
- Update import statements if needed
- Parcel will auto-install required dependencies

© Mindrally · Apache-2.0 · Mindrally/skills

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

Всё по теме «Фронтенд и UI» →
rspack-v2-upgrade rstackjs Ведёт проект с Rspack 1.x через переход на вторую версию: зависимости, конфиг, проверка сборки. Пригодится, когда мажорный апгрейд страшно начинать вручную. CX Codex +1 515установок rslib-best-practices rstackjs Скилл обучает агента правилам сборки библиотек на Rslib. Пригодится при настройке rslib.config.ts, разделении зависимостей и выводе деклараций. CX Codex +1 1 000установок esbuild sanjeed5 Правило для Cursor, которое задаёт агенту порядок работы с esbuild: один конфиг вместо россыпи флагов в package.json. Пригодится, когда сборка уже есть, но её никто не может поддерживать. ★ 3 579звёзд репо bun-development sickn33 Скилл помогает вести JavaScript и TypeScript-разработку на Bun: создавать проекты, переносить код с Node.js и разбирать проблемы рантайма. CX Codex +1 2 800установок tsdown rolldown Скилл для сборки TypeScript и JavaScript-библиотек на основе Rolldown. Генерирует типы, собирает в ESM/CJS, оптимизирует через tree shaking и минификацию. CX Codex +1 1 500установок tsdown-migrate rolldown Скилл ведёт миграцию TypeScript-библиотеки с tsup на tsdown: таблицы соответствия опций, различия в значениях по умолчанию и замена убранных опций. CX Codex +1 388установок

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

graphql-development Набор правил для GraphQL: схема, типизированные клиенты, интеграция с React и Next.js. Пригодится, когда агент пишет резолверы и запросы. CX Codex +1 661установок turborepo Скилл задаёт агенту правила работы с Turborepo: структура воркспейсов, turbo.json, кэш и фильтры задач. Пригодится, когда монорепо уже есть и его надо привести в порядок. CX Codex +1 658установок rollup-bundler Скилл задаёт агенту правила конфигурации Rollup.js: форматы вывода, внешние зависимости, tree-shaking и плагины для сборки библиотек. CX Codex +1 657установок 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установок robocorp-cursor-rules Набор правил для ИИ-агента: как писать RPA-автоматизацию на Python под RoboCorp — функционально, с Pydantic и async. CX Codex +1 636установок

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

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