🚀 A Esbuild plugin which replaces targeted strings in files while bundling
This package is based on @rollup/plugin-replace
using npm:
npm install esbuild-plugin-replace --save-dev
using yarn:
yarn add esbuild-plugin-replace -D
const { build } = require('esbuild');
const { replace } = require('esbuild-plugin-replace');
build({
// other build options
plugins: [
replace({
'__buildVersion': '"1.0.0"',
'__author__': `'naecoo'`
})
]
});
The configuration above will replace every instance of __buildVersion
with "1.0.0"
and __author
with 'naecoo'
Note: Values must be either primitives (e.g. string, number) or function
that returns a string. For complex values, use JSON.stringify
. To replace a target with a value that will be evaluated as a string, set the value to a quoted string (e.g. "test"
) or use JSON.stringify
to preprocess the target string safely.
In addition to the properties and values specified for replacement, users may also specify the options below.
Type: RegExp
default: /.*/
Filters files that do not match RegExp expressions. By default all files are matched.
Type: RegExp
default: null
Filters files that do match the exclude
RegExp expressions. When include
and exclude
are set at the same time, include
is used first, and exclude
doesn't work.
Type: { [key: String]: Replacement }
, where Replacement
is either a string or a function
that returns a string.
Default: {}
To avoid mixing replacement strings with the other options, you can specify replacements in the values
option. For example, the following signature:
replace({
include: /\.js$/,
changed: "replaced"
});
Can be replaced with:
replace({
include: /\.js$/,
values: {
changed: "replaced"
}
});
Type: Array[String, String]
Default: ['\b', '\b']
Specifies the boundaries around which strings will be replaced. By default, delimiters are word boundaries. See Word Boundaries below for more information.