{"id":25393,"library":"esbuild-plugin-purgecss-2","title":"esbuild-plugin-purgecss-2","description":"An esbuild plugin for PurgeCSS that allows passing content (HTML/CSS) directly to the plugin configuration. Stable version 1.0.1 as of 2024. Based on the original esbuild-plugin-purgecss but with the added ability to specify content paths via plugin options, enabling tree-shaking of unused CSS during esbuild bundles. Supports glob patterns for content files. Ships TypeScript types, requires Node.js 10+, and works with esbuild v0.8+. A lightweight alternative to heavier PostCSS setups for CSS purging.","status":"active","version":"1.0.1","language":"javascript","source_language":"en","source_url":"https://github.com/arslanakram/esbuild-plugin-purgecss-2.0","tags":["javascript","esbuild","plugin","purgecss","typescript"],"install":[{"cmd":"npm install esbuild-plugin-purgecss-2","lang":"bash","label":"npm"},{"cmd":"yarn add esbuild-plugin-purgecss-2","lang":"bash","label":"yarn"},{"cmd":"pnpm add esbuild-plugin-purgecss-2","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core dependency for CSS purging functionality","package":"purgecss","optional":false},{"reason":"Often used together for content file globbing","package":"glob-all","optional":true}],"imports":[{"note":"ESM-only exports; requires \"type\": \"module\" in package.json for CJS projects. For CommonJS, use dynamic import().","wrong":"const purgecssPlugin2 = require('esbuild-plugin-purgecss-2')","symbol":"default","correct":"import purgecssPlugin2 from 'esbuild-plugin-purgecss-2'"},{"note":"CJS require returns the plugin function directly, not as named export.","wrong":"const { purgecssPlugin2 } = require('esbuild-plugin-purgecss-2')","symbol":"purgecssPlugin2","correct":"const purgecssPlugin2 = require('esbuild-plugin-purgecss-2')"},{"note":"Type-only import for TypeScript users; available in v1.0.0+.","wrong":null,"symbol":"PurgecssPluginOptions","correct":"import type { PurgecssPluginOptions } from 'esbuild-plugin-purgecss-2'"}],"quickstart":{"code":"const glob = require('glob-all');\nconst purgecssPlugin2 = require('esbuild-plugin-purgecss-2');\n\nrequire('esbuild').build({\n  entryPoints: ['src/app.js'],\n  bundle: true,\n  outfile: 'dist/app.js',\n  plugins: [\n    purgecssPlugin2({\n      content: glob.sync([\n        './*.html',\n        './views/**/*.html',\n        './src/**/*.js',\n      ]),\n    }),\n  ],\n}).catch(() => process.exit(1));","lang":"javascript","description":"Demonstrates usage with esbuild build configuration, glob content paths, and plugin installation."},"warnings":[{"fix":"Use import() for CommonJS projects: const purgecssPlugin2 = (await import('esbuild-plugin-purgecss-2')).default;","message":"The package uses ESM-only exports; using require() directly will fail unless you use dynamic import or set \"type\": \"module\".","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Migrate to esbuild-plugin-purgecss-2 and adjust content option.","message":"The original esbuild-plugin-purgecss is unmaintained; this fork adds content pass-through but may not receive updates.","severity":"deprecated","affected_versions":"<1.0.0"},{"fix":"Verify glob results: console.log(glob.sync(['./*.html'])) before passing to plugin.","message":"Glob patterns must match files that are accessible at build time; ensure path correctness to avoid empty content.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Add --loader:.css=file to esbuild or configure loader accordingly.","message":"The plugin only runs on CSS output from esbuild; if your CSS is imported via JS (e.g., import './style.css'), ensure esbuild handles CSS.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run: npm install -D esbuild-plugin-purgecss-2","cause":"Missing install or incorrect package name (note '-2' suffix).","error":"Error: Cannot find module 'esbuild-plugin-purgecss-2'"},{"fix":"In CJS, use: const purgecssPlugin2 = require('esbuild-plugin-purgecss-2'); or const purgecssPlugin2 = (await import('esbuild-plugin-purgecss-2')).default;","cause":"Using default import in CJS context without proper interop.","error":"TypeError: purgecssPlugin2 is not a function"},{"fix":"Provide an array of file paths or glob patterns: content: glob.sync(['./*.html'])","cause":"The content array is empty or null.","error":"Error: No content paths found. You must specify 'content' option."}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}