Replace content before bundling with support for Filefilter, Namespace and Regex.
$ npm install --save-dev esbuild-plugin-text-replace
Hint: Node >=10.1.0 for fs.promise
as a plugin
import esbuild from 'esbuild'
import textReplace from 'esbuild-plugin-text-replace'
await esbuild.build(
{
entryPoints: ['./test-build-input'],
outfile: 'test-build-out.js',
plugins: [
textReplace(
{
include: /mypackage\/dist\/loader\.js$/,
pattern:[
['const installRetry','let installRetry'],
[/const\s+{\s*textReplace\s*}\s*=\s*require\s*\(\s*'esbuild-plugin-text-replace'\s*\)\s*;/g , "'import textReplace from 'esbuild-plugin-text-replace'"]
]
}
)
],
}
)
as part of a pipe
import esbuild from 'esbuild';
import pipe from 'esbuild-plugin-pipe';
import textReplace from 'esbuild-plugin-text-replace';
await esbuild.build(
{
entryPoints: ['./test-build-input'],
outfile: 'test-build-out.js',
bundle: true,
plugins: [
pipe({
filter: /.*/,
namespace: '',
plugins: [
textReplace(
{
include: /mypackage\/dist\/loader\.js$/,
pattern:[
['const installRetry','let installRetry'],
[/const\s+{\s*textReplace\s*}\s*=\s*require\s*\(\s*'esbuild-plugin-text-replace'\s*\)\s*;/g , "'import textReplace from 'esbuild-plugin-text-replace'"]
]
}
)
]
})
]
}
)
Filter filepath by regex.
Type: RegExp
Default: /.*/
Note: Try to never use the default value as this is has a huge impact on speed if all files are matched!
Type: String
Default: all
More info about esbuild namespaces
Search with Text or Regex and replace the found content with a string.
Type: Array
Default: []
All information about the replaceAll regex Options and replacer functions.
Examples:
[
// transform 2020-10-02 to 02.10.2020
[/(\d{4})-(\d{2})-(\d{2})/g , (match,p1,p2,p3,offset,wholeString)=>`${p3}.${p2}.${p1}`],
['__buildVersion' , '"1.1.1"'],
[/(\s*)const(\s+a\s*=\s*1[\s;\n])/g, '$1let$2']
]
Note:
/g
for globale replacement is a must requirement
- 1.3.0 pipe mode only: Use the regex from parameter include to transform only files which match
- 1.2.0 Add esbuild pipe support
- 1.1.3 Initial relase
- tests
- speed tests
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (git checkout -b feature/AmazingFeature)
- Commit your Changes (git commit -m 'Add some AmazingFeature')
- Push to the Branch (git push origin feature/AmazingFeature)
- Open a Pull Request
Distributed under the "bsd-2-clause" License. See LICENSE.txt for more information.