{"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,"search_vec":"'18.0.0':22 '6.0.1':14 'activ':52 'array':31,44 'concaten':30 'configur':11 'critic':39 'current':17 'design':8 'e.g':27 'everi':56 'execut':35 'function':36 'generic':24 'javascript':59 'librari':7 'lodash.merge':28 'maintain':51 'merg':3,6,25,32,38,61 'minor/patch':54 'month':58 'nest':46 'node':21 'object':12,33 'plugin':43 'releas':19,55 'requir':20 'rule':47 'ship':48 'special':5 'stabl':18 'type':50 'typescript':49,62 'unlik':23 'util':26 'version':13 'webpack':2,10,41,60 'webpack-merg':1","created_at":"2026-04-25T11:25:00.413896+00:00","updated_at":"2026-04-25T11:25:00.413896+00:00","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,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/survivejs/webpack-merge","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/webpack-merge","openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops","serialization"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-17","next_check":"2026-07-24","install_tag":null}}