6.2.0 • Published 11 months ago

merge-json-webpack-plugin v6.2.0

Weekly downloads
31
License
MIT
Repository
github
Last release
11 months ago

merge-json-webpack-plugin

Tests License Version Node Version Webpack Version

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

  • cwdstring - The directory, an absolute path, for resolving files. Defaults to webpack context

  • groupsarray - Files to merge and destination path

    • files[string[]] - Array of files, path resolved relative to cwd.
    • pattern[string[]] or string - [Fast-Glob] pattern matching. The order of merge is not guarenteed.
    • transformfunction - 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.
    • tostring: Destination path to write the files to.
    • globOptionsGlobOptions - Options to foward to fast-glob when glob is used otherwise ignored. See https://github.com/mrmlnc/fast-glob#options-3.
  • minifyboolean - Minify the output json. Enabled by default in production mode.

  • mergeFnfunction - A function used to merge two objects. Defaults to Object.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),
    }),
  ],
};
6.2.0

11 months ago

6.1.0

2 years ago

6.0.0

3 years ago

5.1.0

3 years ago

5.0.3

3 years ago

5.0.2

3 years ago

5.0.1

4 years ago

5.0.0

4 years ago

4.2.1

4 years ago

4.2.0

4 years ago

4.1.0

4 years ago

4.0.0

4 years ago

3.0.0

4 years ago

2.0.0

4 years ago

1.2.0

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.0

4 years ago