catamphetamine / universal-webpack

Isomorphic Webpack: both on client and server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support Webpack 4?

Iuriy-Budnikov opened this issue · comments

commented

Hey guys!
It looks like plugin CommonsChunkPlugin is deprecated in the webpack 4.
Are you going to support v4?

I don't see how removing CommonsChunkPlugin could break this library

commented

I have some errors in this place

&& plugin.constructor !== webpack.optimize.CommonsChunkPlugin

Define "some"

commented

Here log

/Users/admin/Projects/redux-starter/node_modules/webpack-cli/bin/webpack.js:237
				throw err;
				^

Error: webpack.optimize.CommonsChunkPlugin has been removed, please use config.optimization.splitChunks instead.
    at Object.get [as CommonsChunkPlugin] (/Users/admin/Projects/redux-starter/node_modules/webpack/lib/webpack.js:159:10)
    at /Users/admin/Projects/redux-starter/node_modules/universal-webpack/build/server configuration.js:136:131
    at Array.filter (<anonymous>)
    at server_configuration (/Users/admin/Projects/redux-starter/node_modules/universal-webpack/build/server configuration.js:135:48)
    at Object.<anonymous> (/Users/admin/Projects/redux-starter/webpack/webpack.config.server.js:5:16)
    at Module._compile (/Users/admin/Projects/redux-starter/node_modules/v8-compile-cache/v8-compile-cache.js:178:30)
    at loader (/Users/admin/Projects/redux-starter/node_modules/babel-register/lib/node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (/Users/admin/Projects/redux-starter/node_modules/babel-register/lib/node.js:154:7)
    at Module.load (module.js:556:32)
    at tryModuleLoad (module.js:499:12)
    at Function.Module._load (module.js:491:3)
    at Module.require (module.js:587:17)
    at require (/Users/admin/Projects/redux-starter/node_modules/v8-compile-cache/v8-compile-cache.js:159:20)
    at Object.<anonymous> (/Users/admin/Projects/redux-starter/webpack/webpack.config.server.development.babel.js:2:1)
    at Module._compile (/Users/admin/Projects/redux-starter/node_modules/v8-compile-cache/v8-compile-cache.js:178:30)
    at loader (/Users/admin/Projects/redux-starter/node_modules/babel-register/lib/node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (/Users/admin/Projects/redux-starter/node_modules/babel-register/lib/node.js:154:7)
    at Module.load (module.js:556:32)
    at tryModuleLoad (module.js:499:12)
    at Function.Module._load (module.js:491:3)
    at Module.require (module.js:587:17)
    at require (/Users/admin/Projects/redux-starter/node_modules/v8-compile-cache/v8-compile-cache.js:159:20)
    at WEBPACK_OPTIONS (/Users/admin/Projects/redux-starter/node_modules/webpack-cli/bin/convert-argv.js:133:13)
    at requireConfig (/Users/admin/Projects/redux-starter/node_modules/webpack-cli/bin/convert-argv.js:135:6)
    at /Users/admin/Projects/redux-starter/node_modules/webpack-cli/bin/convert-argv.js:142:17
    at Array.forEach (<anonymous>)
    at module.exports (/Users/admin/Projects/redux-starter/node_modules/webpack-cli/bin/convert-argv.js:140:15)
    at yargs.parse (/Users/admin/Projects/redux-starter/node_modules/webpack-cli/bin/webpack.js:234:39)
    at Object.parse (/Users/admin/Projects/redux-starter/node_modules/yargs/yargs.js:539:18)
    at /Users/admin/Projects/redux-starter/node_modules/webpack-cli/bin/webpack.js:212:8

Open /Users/admin/Projects/redux-starter/node_modules/universal-webpack/build/server configuration.js on line 136 and replace the .filter() function with this one:

	// Remove HotModuleReplacementPlugin and CommonsChunkPlugin
	configuration.plugins = configuration.plugins.filter(plugin =>
	{
		try
		{
			if (plugin.constructor === webpack.optimize.CommonsChunkPlugin)
			{
				return false
			}
		}
		catch (error)
		{
			// Webpack 4 throws `RemovedPluginError`.
		}

		return plugin.constructor !== webpack.HotModuleReplacementPlugin
	})

Save the file and re-run the application and see if it works.

Hi. Same problem here.
Tested you fix - it is valid, bundle builds normally (However webpack var is called _webpack there).

Published universal-webpack@0.6.1 with this fix