Extract React libraries to a separate chunk and expose them globally [PREMIUM-2]

This commit is contained in:
Alexey Stoletniy
2017-03-01 14:30:24 +03:00
parent 136a531047
commit 37a6a74b6e
2 changed files with 22 additions and 2 deletions

View File

@@ -2,7 +2,8 @@ var webpack = require('webpack'),
_ = require('underscore'),
path = require('path'),
baseConfig = {},
config = [];
config = [],
globalPrefix = 'MailPoetLib';
baseConfig = {
context: __dirname,
@@ -60,9 +61,17 @@ baseConfig = {
include: require.resolve('underscore'),
loader: 'expose-loader?_',
},
{
include: require.resolve('react'),
loader: 'expose-loader?' + globalPrefix + '.React',
},
{
include: require.resolve('react-string-replace'),
loader: 'expose-loader?' + globalPrefix + '.ReactStringReplace',
},
{
test: /wp-js-hooks/i,
loader: 'exports-loader?window.wp.hooks',
loader: 'expose-loader?' + globalPrefix + '.Hooks!exports-loader?wp.hooks',
},
{
include: /Blob.js$/,
@@ -111,6 +120,12 @@ config.push(_.extend({}, baseConfig, {
'jquery.serialize_object',
'parsleyjs'
],
admin_vendor: [
'react',
'react-dom',
'react-router',
'react-string-replace'
],
admin: [
'subscribers/subscribers.jsx',
'newsletters/newsletters.jsx',
@@ -172,6 +187,7 @@ config.push(_.extend({}, baseConfig, {
]
},
plugins: [
new webpack.optimize.CommonsChunkPlugin('admin_vendor', 'admin_vendor.js', ['admin_vendor', 'admin']),
new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js')
],
externals: {