{"id":25319,"library":"esbuild-plugin-cdn-imports","title":"esbuild-plugin-cdn-imports","description":"An esbuild plugin (v2.0.0) that intercepts import statements and resolves them to CDN URLs (esm.sh, unpkg, jsdelivr, skypack), enabling browser-side module resolution without a filesystem. Requires esbuild >=0.20.0 and Node >=18. Ships TypeScript types. Key differentiator: supports multiple CDNs and per-package version pinning, but some dependencies may not work from a CDN.","status":"active","version":"2.0.0","language":"javascript","source_language":"en","source_url":"https://github.com/luxass/esbuild-cdn-imports","tags":["javascript","esbuild","plugin","skypack","unpkg","jsdelivr","esm","import","typescript"],"install":[{"cmd":"npm install esbuild-plugin-cdn-imports","lang":"bash","label":"npm"},{"cmd":"yarn add esbuild-plugin-cdn-imports","lang":"bash","label":"yarn"},{"cmd":"pnpm add esbuild-plugin-cdn-imports","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency required for plugin usage","package":"esbuild","optional":false}],"imports":[{"note":"Named export only; no default export.","wrong":"import CDNImports from 'esbuild-plugin-cdn-imports'","symbol":"CDNImports","correct":"import { CDNImports } from 'esbuild-plugin-cdn-imports'"},{"note":"ESM-only package; CJS require not supported.","wrong":"const { CDNImports } = require('esbuild-plugin-cdn-imports')","symbol":"CDNImports","correct":"import { CDNImports } from 'esbuild-plugin-cdn-imports'"},{"note":"TypeScript users should import the type for options validation.","wrong":null,"symbol":"CDNImportsOptions","correct":"import type { CDNImportsOptions } from 'esbuild-plugin-cdn-imports'"}],"quickstart":{"code":"import { build } from 'esbuild';\nimport { CDNImports } from 'esbuild-plugin-cdn-imports';\n\nawait build({\n  entryPoints: ['./src/index.js'],\n  bundle: true,\n  outfile: './dist/bundle.js',\n  format: 'esm',\n  platform: 'browser',\n  plugins: [\n    CDNImports({\n      cdn: 'esm',\n      versions: {\n        'react': '17.0.2',\n        'react-dom': '17.0.2'\n      },\n      exclude: ['@prisma/client']\n    })\n  ]\n});","lang":"javascript","description":"Configures esbuild to replace imports of 'react' and 'react-dom' with esm.sh CDN URLs, excluding '@prisma/client' from transformation."},"warnings":[{"fix":"Upgrade Node.js to version 18 or later.","message":"Node.js >=18 required; plugin uses modern APIs (e.g., node:module) not available in older versions.","severity":"breaking","affected_versions":"<18"},{"fix":"Update esbuild to version 0.20.0 or later.","message":"esbuild >=0.20.0 required as peer dependency.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Upgrade esbuild to at least 0.19.0.","message":"Support for esbuild <0.19.0 dropped in v1.2.0; earlier versions may use an older plugin version.","severity":"deprecated","affected_versions":">=1.2.0"},{"fix":"Use the 'exclude' option to bypass CDN resolution for incompatible packages, or verify CDN compatibility beforehand.","message":"Some npm packages (e.g., those with native modules or certain Node.js APIs) may not work when imported from a CDN.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use import syntax instead of require(), or set your project's type to module.","message":"ESM-only package; cannot be imported with CommonJS require().","severity":"breaking","affected_versions":">=0.0.0"},{"fix":"Prefer 'esm' or 'jsdelivr' CDN options.","message":"The 'skypack' CDN may be less reliable; esm.sh and jsdelivr are recommended.","severity":"deprecated","affected_versions":">=0.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 esbuild-plugin-cdn-imports'.","cause":"Package not installed correctly or missing peer dependency.","error":"Error: Cannot find module 'esbuild-plugin-cdn-imports'"},{"fix":"Use 'import { CDNImports } from 'esbuild-plugin-cdn-imports''.","cause":"Import might be using default import instead of named import.","error":"TypeError: CDNImports is not a function"},{"fix":"Use one of: 'esm', 'unpkg', 'jsdelivr', 'skypack'.","cause":"Provided CDN name is not in the supported list.","error":"Error: [plugin: cdn-imports] Unsupported CDN 'xyz'"},{"fix":"Switch to ES module imports or set 'type': 'module' in package.json.","cause":"The project is using CommonJS require() to import an ESM-only plugin.","error":"Build failed with 1 error: error: require() of ES Module not supported"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}