Skip to main content

parcel

Expert Parcel assistance covering zero-configuration bundling, transformer plugins, SVG/CSS/SCSS asset pipelines, code splitting, and multi-target builds. Use when bundling web apps without complex Webpack setups, configuring .parcelrc, debugging build caches, or compiling modern JavaScript.

Informations de source

Dépôt
G1Joshi/Agent-Skills
Dernière activité de la source
1 octobre 2026 à 16:38
Langue détectée de SKILL.md
anglais
Étoiles
14
Forks
2

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
parcel
description
Expert Parcel assistance covering zero-configuration bundling, transformer plugins, SVG/CSS/SCSS asset pipelines, code splitting, and multi-target builds. Use when bundling web apps without complex Webpack setups, configuring .parcelrc, debugging build caches, or compiling modern JavaScript.
# Parcel Parcel is the "Zero Config" bundler. It works out of the box for React, Vue, Rust (Wasm), and more. v2.12 uses **Lightning CSS** for extreme performance. ## When to Use - **Zero-Config Web Application Bundling**: Bundling modern web apps, TypeScript, JSX, SCSS, and HTML without manual configuration. - **High-Performance Rust-Based Compilation**: Leveraging SWC-based transpilation and multithreaded caching out of the box. - **Full-Stack Asset Pipelines**: Bundling SPAs, web workers, WebAssembly, and service workers automatically from HTML entrypoints. - **Micro-Frontend & Library Building**: Outputting ESM, CommonJS, and UMD bundles with automated source maps. ## Quick Start ### 1. Initialize and Run Parcel ```bash npm install --save-dev parcel ``` ```json // package.json { "name": "my-app", "source": "src/index.html", "scripts": { "start": "parcel", "build": "parcel build" }, "devDependencies": { "parcel": "^2.12.0" } } ``` ### 2. Start Dev Server ```bash npm start # Server listening on http://localhost:1234 ``` ## Core Concepts ### HTML-First Bundling & Zero-Config Setup Building a TypeScript React application starting directly from `index.html`: ```html <!-- src/index.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Parcel React App</title> <link rel="stylesheet" href="./styles.scss" /> </head> <body> <div id="root"></div> <script type="module" src="./index.tsx"></script> </body> </html> ``` ### Production Build & Library Configuration (`package.json`) Configuring dual ESM and CommonJS library output with automated types: ```json { "name": "my-shared-library", "version": "1.0.0", "source": "src/index.ts", "main": "dist/index.cjs", "module": "dist/index.mjs", "types": "dist/index.d.ts", "scripts": { "start": "parcel src/index.html --port 3000 --open", "build": "parcel build src/index.html --dist-dir build --public-url /", "build:lib": "parcel build" }, "devDependencies": { "@parcel/packager-ts": "^2.12.0", "@parcel/transformer-sass": "^2.12.0", "@parcel/transformer-typescript-types": "^2.12.0", "parcel": "^2.12.0" } } ``` ### Advanced Pipeline Customization (`.parcelrc`) Extending the default pipeline with custom transformers and compressors: ```json { "extends": "@parcel/config-default", "transformers": { "*.svg": ["@parcel/transformer-svg", "@parcel/transformer-svgo"] }, "compressors": { "*.{html,css,js,svg}": [ "@parcel/compressor-gzip", "@parcel/compressor-brotli" ] } } ``` ## Common Patterns ### Custom .parcelrc Pipeline Extension **Problem**: Need custom asset transformation (e.g. SVG inlining or custom minifier) alongside default presets. **Solution**: Create `.parcelrc` extending default config. ```json { "extends": "@parcel/config-default", "transformers": { "*.svg": ["@parcel/transformer-svg", "..."] }, "reporters": ["...", "@parcel/reporter-bundle-analyzer"] } ``` ### Multi-Target Library and Browser Output **Problem**: Build a library for both modern browser ESM and CommonJS node usage. **Solution**: Declare multiple targets in `package.json`. ```json { "name": "lib-core", "source": "src/index.ts", "main": "dist/index.cjs", "module": "dist/index.mjs", "types": "dist/index.d.ts", "targets": { "main": {}, "module": {} } } ``` ## Best Practices **Do**: - Use HTML files as entrypoints (`parcel src/index.html`) so Parcel automatically detects all dependent scripts, styles, and assets. - Configure `targets` in `package.json` with Browserslist queries for precise polyfill generation. - Cache `.parcel-cache` across CI/CD pipeline runs to achieve instantaneous subsequent builds. - Enable `--detailed-report` during production builds to analyze asset bundle weights. **Don't**: - Mix conflicting custom webpack configs inside Parcel projects; rely on `.parcelrc`. - Commit `.parcel-cache` or `dist/` directories to version control. - Manually compile Sass or TypeScript before passing files to Parcel; let Parcel handle the transformation pipeline. ## Troubleshooting | Error | Cause | Solution | | ------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | | Stale build output or cache corruption | `.parcel-cache/` containing invalid serialized graph states | Run `rm -rf .parcel-cache dist` and restart `parcel`. | | `@parcel/core: Failed to resolve module` | Relative import missing extension or package missing in dependencies | Verify file path casing, ensure module is listed in `package.json` dependencies. | | Production build fail: `Target "main" declared in package.json but source is an HTML file` | `main` field mistakenly points to `.js` when bundling single-page HTML app | Remove `"main": "index.js"` from `package.json` when building web applications. | ## References - [Parcel Documentation](https://parceljs.org/)
Voir sur GitHub