Inspired by react-dev-utils/InterpolateHtmlPlugin.
This Webpack plugin designed to lets us interpolate custom predefined variables into assets.
%GIT_DESCRIBE%
: result ofgit describe --tags
%GIT_REV%
: result ofgit rev-parse --short HEAD
%GIT_VERSION%
:%GIT_DESCRIBE%
or%GIT_REV%
%packageJson.[data.path.in.package.json]%
: any data inpackage.json
yarn add @c4605/interpolate-webpack-plugin -D
# or
npm install @c4605/interpolate-webpack-plugin --save-dev
import { InterpolateWebpackPlugin, DefaultReplacer } from 'interpolate-webpack-plugin'
export default {
// ... webpack configs
plugins: [
// Use with default replacer
new InterpolateWebpackPlugin(
new DefaultReplacer({ options }),
),
// Or use custom replacer
new InterpolateWebpackPlugin({ replacer: (filename, source) =>
new PrefixSource(
prefix: '/* prefix */',
source,
)
}),
],
}
Options structure can find in src/index.ts#InterpolateWebpackPluginOptions
.
The default replacer will not modify binary files (checked by isBinaryFile) and sourcemap files.
If you want to use the builtin variables, you can to this:
module.exports = async () => {
// ... webpack configs
plugins: [
new webpack.DefinePlugin({
...(await new DefaultReplacer({ options }).getDefinePluginOptions()),
// ... other defines
}),
],
}
yarn build # build code
yarn watch # build and watch code
yarn test # run tests