Only load Intl data for current language (#3130)
* Only load Intl data for current language * Extract common chunk only from application.js and public.js * Generate locale packs, avoid caching on window object
This commit is contained in:
		
				
					committed by
					
						
						Eugen Rochko
					
				
			
			
				
	
			
			
			
						parent
						
							73e4468ff3
						
					
				
				
					commit
					9d04de1c8d
				
			@@ -10,15 +10,20 @@ const ExtractTextPlugin = require('extract-text-webpack-plugin');
 | 
			
		||||
const ManifestPlugin = require('webpack-manifest-plugin');
 | 
			
		||||
const extname = require('path-complete-extname');
 | 
			
		||||
const { env, paths, publicPath, loadersDir } = require('./configuration.js');
 | 
			
		||||
const localePackPaths = require('./generateLocalePacks');
 | 
			
		||||
 | 
			
		||||
const extensionGlob = `**/*{${paths.extensions.join(',')}}*`;
 | 
			
		||||
const packPaths = sync(join(paths.source, paths.entry, extensionGlob));
 | 
			
		||||
const entryPacks = [].concat(packPaths).concat(localePackPaths);
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
  entry: packPaths.reduce(
 | 
			
		||||
  entry: entryPacks.reduce(
 | 
			
		||||
    (map, entry) => {
 | 
			
		||||
      const localMap = map;
 | 
			
		||||
      const namespace = relative(join(paths.source, paths.entry), dirname(entry));
 | 
			
		||||
      let namespace = relative(join(paths.source, paths.entry), dirname(entry));
 | 
			
		||||
      if (namespace === '../../../tmp/packs') {
 | 
			
		||||
        namespace = ''; // generated by generateLocalePacks.js
 | 
			
		||||
      }
 | 
			
		||||
      localMap[join(namespace, basename(entry, extname(entry)))] = resolve(entry);
 | 
			
		||||
      return localMap;
 | 
			
		||||
    }, {}
 | 
			
		||||
@@ -41,7 +46,15 @@ module.exports = {
 | 
			
		||||
    new ManifestPlugin({ fileName: paths.manifest, publicPath, writeToFileEmit: true }),
 | 
			
		||||
    new webpack.optimize.CommonsChunkPlugin({
 | 
			
		||||
      name: 'common',
 | 
			
		||||
      minChunks: 2,
 | 
			
		||||
      minChunks: (module, count) => {
 | 
			
		||||
        if (module.resource && /node_modules\/react-intl/.test(module.resource)) {
 | 
			
		||||
          // skip react-intl because it's useless to put in the common chunk,
 | 
			
		||||
          // e.g. because "shared" modules between zh-TW and zh-CN will never
 | 
			
		||||
          // be loaded together
 | 
			
		||||
          return false;
 | 
			
		||||
        }
 | 
			
		||||
        return count >= 2;
 | 
			
		||||
      },
 | 
			
		||||
    }),
 | 
			
		||||
  ],
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user