The typescript-file-copy-plugin
is a TypeScript transformer plugin that copies files or directories as part of the TypeScript build process. This removes the need for additional build tools or scripts to handle file copying operations.
It leverages the cpx2
module to handle file copying, including support for glob patterns, making it flexible for a variety of file copy operations.
This plugin has been tested against TypeScript version 5.
This plugin requires ts-patch
to be installed and set up first. ts-patch
allows for custom TypeScript transformations by patching the TypeScript compiler.
To install ts-patch
, run the following command:
npm install --save-dev ts-patch
For more details on setting up ts-patch
, refer to the ts-patch documentation.
There are two ways to patch the TypeScript compiler:
You can change your tsc
to tspc
instead.
{
"scripts": {
"build": "tspc --project tsconfig.json"
}
}
You can instead patch the TypeScript compiler by adding this script to your package.json
, allowing you to continue using tsc
as normal:
{
"scripts": {
"prepare": "ts-patch install -s"
}
}
npm install --save-dev typescript-file-copy-plugin
To configure the plugin, you need to add it to your tsconfig.json
file under the compilerOptions.plugins
section. The copy
option is an array of objects, where each object specifies a source (src
) and a destination (dest
). The src
and dest
fields can include glob patterns for flexible file and directory copying.
Here is an example of how to configure the plugin:
{
"compilerOptions": {
"plugins": [
{
"transform": "typescript-file-copy-plugin",
"copy": [
{
"src": "src/assets/*",
"dest": "dist/assets"
},
{
"src": "src/config.json",
"dest": "dist/config.json"
}
]
}
]
}
}
-
Copy a Single File:
{ "transform": "typescript-file-copy-plugin", "copy": [ { "src": "src/single-file.txt", "dest": "dist/single-file.txt" } ] }
-
Copy an Entire Directory:
{ "transform": "typescript-file-copy-plugin", "copy": [ { "src": "src/directory/*", "dest": "dist/directory" } ] }
-
Copy Files Matching a Wildcard Pattern:
{ "transform": "typescript-file-copy-plugin", "copy": [ { "src": "src/wildcard/*.txt", "dest": "dist/wildcard" } ] }
-
Recursive Copy Using Double Wildcard Pattern:
{ "transform": "typescript-file-copy-plugin", "copy": [ { "src": "src/double-wildcard/**/*", "dest": "dist/double-wildcard" } ] }
-
Copy Source File to Destination File:
{ "transform": "typescript-file-copy-plugin", "copy": [ { "src": "src/single-file.txt", "dest": "dist/single-file-copy.txt" } ] }