Skip to content

The plugin copies files to the esbuild out folder, ensuring that all required files are included alongside the built code.

License

Notifications You must be signed in to change notification settings

simonkovtyk/esbuild-plugin-file-copy

Repository files navigation

File Copy Plugin

This esbuild plugin copies specified files to the output folder after the bundling process. It ensures static assets are included in the final build without interrupting or altering the main esbuild workflow.

NPM Downloads NPM License GitHub package.json version TypeScript types


Add a ⭐ to this repository — it motivates me a lot!

⚡️ Getting started

Simply install this package with your package manager.

npm install -D esbuild-plugin-file-copy
📦 other package manager

Here are examples for installing the package with other package manager.

💾 yarn

yarn add -D esbuild-plugin-file-copy

💾 pnpm

pnpm install -D esbuild-plugin-file-copy

Looks good so far 🔥 — now you have installed the latest version!

💡 Introduction

This esbuild plugin simply copies specified files to the output folder during the build process. It reads a list of file paths or patterns, then moves those files into the output directory after esbuild finishes bundling.

The plugin ensures that static assets, such as images or configuration files, are included in the final build. It’s lightweight and works without altering the bundling process itself. By automating file copying, it reduces manual steps and keeps the build process smooth and consistent.

🔧 Usage

fileCopyPlugin(options);

This function needs to be called inside the esbuild configuration in order to use this plugin. It will provide the plugin inside the build process of esbuild.

Show an example of the integration
esbuild.build({
  // some esbuild configuration...
  plugins: [
    fileCopyPlugin(
      // configure it here...
    );
    // more esbuild plugins here...
  ]
})

Properties

lifecycle

Default: onEnd

An string with either the value onStart or onEnd.

Show an example
fileCopyPlugin({
  lifecycle: "onStart"
});

See here for more about esbuild lifecycles.

inputs

Default: undefined

A Array of object with the following properties:

{
  from: string,
  to: string
}

Any file or directory from the source path (from key) will be copied to the target path (to key).

The file name will be kept while copying the file from source path to target path.

Show an example
fileCopyPlugin({
  inputs: [{
    from: "my-lib/example.ts", // input path
    to: "dist/my-lib" // copied to path
  }]
});

globs

Default: undefined

A Array of object with the following properties:

{
  from: string,
  to: string
}

Any matching file or directory from the source path (from key) will be copied to the target path (to key).

The file name will be kept while copying the file from source path to target path.

This option enables the use of glob patterns. See here for more about glob patterns.

Show an example
fileCopyPlugin({
  globs: [{
    from: "my-lib/**/*.env", // input path
    to: "dist/my-lib" // copied to path
  }]
});

Returns

Type: Plugin

An instance of this plugin, that will be used by esbuild automatically.

License

The MIT License (MIT) - Please have a look at the License file for more details.

Contributing

Want to contribute to an open-source project on GitHub but unsure where to start? Check out this comprehensive step-by-step guide on how to contribute effectively!

From forking the repository to creating pull requests, this guide walks you through every stage of the process, helping you make a successful contribution to this GitHub project. Start collaborating, learn new skills, and make an impact on this project!

See here for the contribute guide at GitHub.


GitHub @simonkovtyk

Releases

No releases published

Packages

No packages published