esbuild-copy-files

raw JSON →
0.2.16 verified Fri May 01 auth: no javascript

esbuild-copy-files (v0.2.16) is an esbuild plugin that copies static files (like HTML, CSS, images) from source to output directory during esbuild builds. It integrates seamlessly with esbuild's plugin API, supports glob patterns for file selection, and is TypeScript-friendly with built-in types. Unlike using external copy tools, it runs within esbuild's build lifecycle, ensuring file copying happens at the right stage. Peer dependency on esbuild >= 0.14.0. The plugin is actively maintained with frequent releases.

error Error: The plugin 'esbuild-copy-files' must be used with esbuild version >= 0.14.0
cause Installed esbuild version is too old.
fix
Run 'npm install esbuild@latest' to upgrade esbuild.
error TypeError: copyFiles is not a function
cause Misunderstood default vs named import.
fix
Use 'import copyFiles from ...' (default import) instead of '{ copyFiles }'.
error Error: Cannot find module 'esbuild-copy-files'
cause Package not installed or not imported correctly.
fix
Run 'npm install esbuild-copy-files' and check import path.
gotcha Plugin copies files after build finishes; may overwrite existing files if output directory isn't clean.
fix Clean outputDir before build or use a unique suffix.
deprecated Options 'watch' and 'inline' are no longer supported in recent versions (removed in v0.2.x).
fix Remove 'watch' and 'inline' options; use esbuild's built-in watch mode.
gotcha Default export may require .default in CJS environments.
fix Use const copyFiles = require('esbuild-copy-files').default;
npm install esbuild-copy-files
yarn add esbuild-copy-files
pnpm add esbuild-copy-files

Shows how to use the plugin in an esbuild build to copy files from public/ to dist/, excluding templates.

import * as esbuild from 'esbuild';
import copyFiles from 'esbuild-copy-files';

await esbuild.build({
  entryPoints: ['src/index.js'],
  bundle: true,
  outdir: 'dist',
  plugins: [
    copyFiles({
      include: ['public/**/*'],
      exclude: ['public/templates/**'],
      outputDir: 'dist'
    })
  ]
});
console.log('Build complete with static files copied.');
// Output: dist/index.js, dist/style.css, dist/images/...