{"library":"parcel","title":"Parcel Bundler","description":"Parcel is a blazing fast, zero-configuration web application bundler designed for simplicity and performance. The current stable version is 2.16.4, with the project maintaining a frequent release cadence for minor and patch updates. Key differentiators include its 'zero-config' approach, aiming to get developers up and running quickly without extensive setup. Under the hood, Parcel leverages Rust-based tooling (such as its JavaScript compiler and HTML/SVG transformers since v2.15.0) for significant performance improvements in bundling, minification, and tree-shaking. It supports a wide range of web assets out-of-the-box, including JavaScript (ES modules, CommonJS), TypeScript, React Server Components (since v2.14.0), CSS, HTML, SVG, images, and more, with automatic code splitting and differential bundling. Parcel also offers a robust plugin system for extensibility and a programmatic API for custom build integrations.","language":"javascript","status":"active","last_verified":"Tue Apr 21","install":{"commands":["npm install parcel"],"cli":{"name":"parcel","version":null}},"imports":["import { Parcel } from '@parcel/core';","import { createWorkerFarm } from '@parcel/core';","import defaultConfig from '@parcel/config-default';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { Parcel } from '@parcel/core';\nimport { createWorkerFarm } from '@parcel/core';\nimport defaultConfig from '@parcel/config-default';\nimport { MemoryFS } from '@parcel/fs';\n\n// Create a worker farm for multi-threading, essential for Parcel's performance.\nconst workerFarm = createWorkerFarm();\n\nasync function buildProject() {\n  // Create an in-memory file system for output, useful for testing or server-side rendering.\n  const outputFS = new MemoryFS(workerFarm);\n\n  const bundler = new Parcel({\n    entries: ['./src/index.html'], // Your main entry point\n    defaultConfig,\n    workerFarm,\n    outputFS,\n    mode: 'production', // Build for production, enabling minification and tree-shaking\n    defaultTargetOptions: {\n      shouldOptimize: true,\n      sourceMaps: false,\n      engines: { node: '>= 16.0.0' }, // Ensure Node.js version is specified\n    },\n  });\n\n  try {\n    const { bundleGraph, buildTime } = await bundler.run();\n    console.log(`✨ Built in ${buildTime}ms`);\n    // You can access bundles from bundleGraph and read them from outputFS\n    const htmlBundle = Array.from(bundleGraph.get === 'html')[0];\n    if (htmlBundle) {\n      const content = await outputFS.readFile(htmlBundle.filePath, 'utf8');\n      console.log('Output HTML content sample:\\n', content.substring(0, 500));\n    }\n  } catch (error) {\n    console.error('❌ Build failed:', error);\n    process.exit(1);\n  } finally {\n    await workerFarm.end(); // Clean up worker processes\n  }\n}\n\nbuildProject();\n","lang":"typescript","description":"This quickstart demonstrates programmatically building a project with Parcel using its JavaScript API, including setup for a worker farm and in-memory file system. It configures a production build for an HTML entry point and logs the build time and a snippet of the output HTML.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}