replacement-brunch
Version:
Perform generic replacement on your compiled files or assets.
71 lines (50 loc) • 2.48 kB
Markdown
# replacement-brunch
Perform generic replacements on your compiled files or assets. In production mode plays well with `digest-brunch`.
## Note
Version 2.0.3 should be used with `brunch` versions from 2.6.3 to 2.7.7, anything later can use 2.0.5 of this plugin.
## Config Options
If you add a `replacement` property to the plugins object in your brunch config you can configure this plugin.
There are two config options.
### `environment`
This simply states which environments to run the replacements in. By default it does all of them. But if you set this to `"production"` then it will only run the replacements when doing a production build.
### `replacements`
This is an array filled with objects which look this this:
```js
{
files: /\.js$/,
matches: [
{
find: 'SOME_TOKEN',
replace: 'My Name'
}
]
}
```
The `files` property is an `anymatch` matcher for the files in your public output directory.
The `matches` property is an array of match objects, each with a find and replace property. The `find` value can be a string or a RegExp. Replace can be a function just like accepted by `string.replace` only with the first parameter set to the contents of the package.config.
## Examples
By default this plugin comes pre-configured with a single replacement. That replacement will replace any instance of `@@@` inside any JavaScript or HTML file with the version specified in your `package.json` file. So if that is what you need, then you don't need to add any configuration at all to your `brunch-config` file.
However, if you want to specify different or additional replacements, you will lose this default one. To specify it yourself, you can configure it like so: (in your `brunch-config.js` file)
```js
{
plugins: {
replacement: {
replacements: [{
files: [/\.js$/, /\.html$/],
match: {find: '@@@', replace: p => p.version}
}]
}
}
}
```
Another potential use is to do a simple find and replace only when building for production. Like a reference to an offline cache manifest.
```js
replacement: {
environment: 'production',
replacements: [{
files: /index\.html$/,
match: {find: 'data-offline-manifest', replace: 'manifest="offline.appcache"'}
}]
}
```
You may even be able to use the plugin to set some basic config values in the `package.json` file and inject them into various pages/scripts. However, there are likely more suitable plugins for configuration.