An open API service indexing awesome lists of open source software.

https://github.com/simonkovtyk/esbuild-plugin-file-copy

The plugin copies files to the esbuild out folder, ensuring that all required files are included alongside the built code.
https://github.com/simonkovtyk/esbuild-plugin-file-copy

assets-management copy-assets copy-files esbuild esbuild-copy esbuild-plugin esbuild-plugins static-file static-file-copy static-files static-files-copy

Last synced: 6 months ago
JSON representation

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

Awesome Lists containing this project

README

          

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](https://img.shields.io/npm/dw/esbuild-plugin-file-copy)
![NPM License](https://img.shields.io/npm/l/esbuild-plugin-file-copy)
![GitHub package.json version](https://img.shields.io/npm/v/esbuild-plugin-file-copy)
![TypeScript types](https://img.shields.io/badge/TypeScript_types-included-blue)


Add a ⭐ to this repository β€” *it motivates me a lot!*

## ⚑️ Getting started

Simply install this package with your package manager.

````shell
npm install -D esbuild-plugin-file-copy
````

πŸ“¦ other package manager

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

> πŸ’Ύ **yarn**
> ````shell
> yarn add -D esbuild-plugin-file-copy
> ````

> πŸ’Ύ **pnpm**
> ````shell
> 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

```typescript
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

````typescript
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

````typescript
fileCopyPlugin({
lifecycle: "onStart"
});
````

[See here](https://esbuild.github.io/plugins/#concepts) for more about esbuild lifecycles.

#### ``inputs``

> Default: ``undefined``

A ``Array`` of ``object`` with the following properties:

````typescript
{
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

````typescript
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:

````typescript
{
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](https://www.malikbrowne.com/blog/a-beginners-guide-glob-patterns/) for more about glob patterns.

Show an example

````typescript
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](https://github.com/simonkovtyk/esbuild-plugin-file-copy/blob/main/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](https://github.com/simonkovtyk/esbuild-plugin-file-copy/blob/main/docs/guides/HOW_TO_CONTRIBUTE.md) for the contribute guide at GitHub.


GitHub [@simonkovtyk](https://github.com/simonkovtyk)