{"id":20793,"library":"webpack-merge","title":"webpack-merge","description":"A specialized merge library designed for webpack configuration objects. Version 6.0.1 is the current stable release, requiring Node >=18.0.0. Unlike generic merge utilities (e.g., Lodash.merge), it concatenates arrays, merges objects, and executes functions before merging—critical for webpack's plugin arrays and nested rules. Ships TypeScript types. Maintained actively, with minor/patch releases every few months.","status":"active","version":"6.0.1","language":"javascript","source_language":"en","source_url":"https://github.com/survivejs/webpack-merge","tags":["javascript","webpack","merge","typescript"],"install":[{"cmd":"npm install webpack-merge","lang":"bash","label":"npm"},{"cmd":"yarn add webpack-merge","lang":"bash","label":"yarn"},{"cmd":"pnpm add webpack-merge","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"ESM default import pattern. Use named import for 'merge'.","symbol":"merge","correct":"import { merge } from 'webpack-merge'"},{"note":"CommonJS requires destructuring; default export is an object with merge as a property.","wrong":"const merge = require('webpack-merge')","symbol":"merge","correct":"const { merge } = require('webpack-merge')"},{"note":"Named export for custom merging behavior.","symbol":"mergeWithCustomize","correct":"import { mergeWithCustomize } from 'webpack-merge'"},{"note":"Named export; not a default.","symbol":"customizeArray","correct":"import { customizeArray } from 'webpack-merge'"}],"quickstart":{"code":"const { merge } = require('webpack-merge');\n\nconst common = {\n  entry: './src/index.js',\n  output: { filename: 'bundle.js' }\n};\n\nconst dev = {\n  mode: 'development',\n  devtool: 'inline-source-map'\n};\n\nconst prod = {\n  mode: 'production',\n  optimization: { minimize: true }\n};\n\nconst env = process.env.NODE_ENV || 'development';\nconst config = merge(common, env === 'development' ? dev : prod);\n\nmodule.exports = config;","lang":"javascript","description":"Shows merging a common webpack config with environment-specific overrides using merge()."},"warnings":[{"fix":"Upgrade Node.js to >=18.0.0 or stick with v5.","message":"In v6, Node.js <18 is no longer supported.","severity":"breaking","affected_versions":"<6.0.0"},{"fix":"If you need replacement, use mergeWithCustomize with a customArray function that returns b instead of concatenating.","message":"Default merge behavior changed: arrays are concatenated, not replaced.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Use mergeWithCustomize or merge() directly.","message":"merge.smart and merge.strategy removed in v5.","severity":"deprecated","affected_versions":">=5.0.0 <6.0.0"},{"fix":"Wrap function-returning configs in an async wrapper only if you need async behavior; note Promises are not supported.","message":"Functions are executed before merging; if you pass a function returning a config, it will be called and merged.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use mergeWithCustomize with customizeObject if you want replacement semantics.","message":"Objects are merged deeply; nested objects are not replaced by default.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"npm install webpack-merge@6.0.1 and use correct import syntax.","cause":"Package not installed or incorrect import path in older versions.","error":"Cannot find module 'webpack-merge'"},{"fix":"Use const { merge } = require('webpack-merge') or import { merge } from 'webpack-merge'.","cause":"CommonJS require without destructuring: const merge = require('webpack-merge') returns an object, not function.","error":"merge is not a function"},{"fix":"Import as named export: import { mergeWithCustomize } from 'webpack-merge'.","cause":"Importing as default when it's a named export.","error":"TypeError: mergeWithCustomize is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}