{"id":21236,"library":"esbuild-plugin-copy","title":"esbuild-plugin-copy","description":"ESBuild plugin for copying assets during builds. Current stable version 2.1.1, released under the LinbuduLab organization. Supports glob patterns, keeps file structure, has watching mode based on chokidar polling, and allows flexible destination configuration. Differentiates from simple shell commands by integrating directly into ESBuild's plugin lifecycle, offering verbose logging, and the ability to copy only on asset changes.","status":"active","version":"2.1.1","language":"javascript","source_language":"en","source_url":"https://github.com/LinbuduLab/esbuild-plugins","tags":["javascript","esbuild","ESBuild","copy","plugin","typescript"],"install":[{"cmd":"npm install esbuild-plugin-copy","lang":"bash","label":"npm"},{"cmd":"yarn add esbuild-plugin-copy","lang":"bash","label":"yarn"},{"cmd":"pnpm add esbuild-plugin-copy","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency required","package":"esbuild","optional":false}],"imports":[{"note":"The plugin exports a named function, not a default export.","wrong":"import copy from 'esbuild-plugin-copy'","symbol":"copy","correct":"import { copy } from 'esbuild-plugin-copy'"}],"quickstart":{"code":"import { build } from 'esbuild';\nimport { copy } from 'esbuild-plugin-copy';\n\n(async () => {\n  const res = await build({\n    entryPoints: ['./src/main.ts'],\n    bundle: true,\n    watch: true,\n    outfile: './dist/main.js',\n    plugins: [\n      copy({\n        resolveFrom: 'cwd',\n        assets: {\n          from: ['./assets/*'],\n          to: ['./assets'],\n        },\n        watch: true,\n      }),\n    ],\n  });\n})();","lang":"typescript","description":"Shows basic usage of the copy plugin with ESBuild, including watch mode and asset copy from ./assets to output directory."},"warnings":[{"fix":"Use 'from: ['./dir/**/*']' to match all files recursively.","message":"Glob pattern 'dir/*' does not expand directories; use 'dir/**/*' to include nested files.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Set 'watch: true' in both ESBuild build options and plugin options. Ensure watched files are not inside absWorkingDir.","message":"Watching mode requires ESBuild's watch option to be enabled and only works for files outside absWorkingDir.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Omit 'resolveFrom' to use ESBuild output directory as base path.","message":"The 'resolveFrom' option may change behavior in future versions; rely on ESBuild's outdir/outfile by default.","severity":"deprecated","affected_versions":">=2.0.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Change glob pattern to './node_modules/tinymce/skins/**/*' to include files in subdirectories.","cause":"Using 'dir/*' when there are no direct files in that directory, only subdirectories.","error":"No files matched using current glob pattern: ./node_modules/tinymce/skins/*"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}