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.
Common errors
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.
Warnings
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;
Install
npm install esbuild-copy-files yarn add esbuild-copy-files pnpm add esbuild-copy-files Imports
- default wrong
const copyFiles = require('esbuild-copy-files')correctimport copyFiles from 'esbuild-copy-files' - copyFiles wrong
import { copyFiles } from 'esbuild-copy-files'correctimport copyFiles from 'esbuild-copy-files' - Plugin type
import type { Plugin } from 'esbuild'
Quickstart
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/...