merge-json-webpack-plugin
v6.2.0
Published
Webpack plugin to merge multiple json files into one
Downloads
4,430
Maintainers
Readme
merge-json-webpack-plugin
Webpack plugin to merge multiple json files into one
Getting Started
Installation
npm i -D merge-json-webpack-plugin
# or
yarn add --dev merge-json-webpack-plugin
Usage
// webpack.config.js
const MergeJsonPlugin = require('merge-json-webpack-plugin');
module.exports = {
plugins: [
new MergeJsonPlugin({
force: false,
groups: [
{
files: [
'common-manifest.json',
'firefox-manifest.json'
],
transform: (outputJson) => outputJson,
to: 'manifest.json',
},
{
pattern: '*.json', // glob. see https://github.com/mrmlnc/fast-glob
to: 'merged-[contenthash].json',
},
],
}),
],
};
Options
cwd[
string
] - The directory, an absolute path, for resolving files. Defaults to webpack contextgroups[
array
] - Files to merge and destination path- files[
string[]
] - Array of files, path resolved relative tocwd
. - pattern[
string[]
] or [string
] - [Fast-Glob] pattern matching. The order of merge is not guarenteed. - transform[
function
] - A function to modify the merged json contents. The return json value is written to the output file. If the function returns a promise, it will be awaited. - to[
string
]: Destination path to write the files to. - globOptions[
GlobOptions
] - Options to foward tofast-glob
when glob is used otherwise ignored. See https://github.com/mrmlnc/fast-glob#options-3.
- files[
minify[
boolean
] - Minify the output json. Enabled by default in production mode.mergeFn[
function
] - A function used to merge two objects. Defaults toObject.assign
.
// webpack.config.js
const MergeJsonPlugin = require('merge-json-webpack-plugin');
const _ = require('loadsh');
const customizer = (objValue, srcValue) => {
if (_.isArray(objValue)) {
return objValue.concat(srcValue);
}
};
const merge = (object, other) => {
return _.mergeWith(object, other, customizer);
};
module.exports = {
plugins: [
new MergeJsonPlugin({
mergeFn: merge,
}),
new MergeJsonPlugin({
mergeFn: (prev, current) => Object.assign(prev, current),
}),
],
};
force[
boolean
] - Overwrites files already in compilation.assets (usually added by other plugins/loaders). Disabled by default.globOptions[
GlobOptions
] - Options to foward tofast-glob
when glob is used otherwise ignored. See https://github.com/mrmlnc/fast-glob#options-3.