2017-02-10 81 views
1

需求是为每种语言创建应用程序包并拆分供应商模块。下面webpack.config.js与CommonsChunkPlugin一起使用webpack-i18n-plugin

// webpack.config.js 
var webpack = require('webpack') 
var path = require('path') 
var I18nPlugin = require("i18n-webpack-plugin") 

var locales = { 
    "en": require("./m1/js/en.json"), 
    "ja": require("./m1/js/ja.json") 
} 

module.exports = Object.keys(locales).map(function (locale) { 
    return { 
     name: locale, 
     entry: "./m1/js/main.js", 
     output: { 
      filename: 'app-' + locale + '.js', 
      path: path.resolve(__dirname, 'm1/js/build') 
     }, 
     plugins: [ 
      new I18nPlugin(
       locales[locale], 
       { 
        functionName: '_t', 
       } 
      ), 
      new webpack.optimize.CommonsChunkPlugin({ 
       name: 'vendor', 
       minChunks: function (module) { 
        return module.context && module.context.indexOf('node_modules') !== -1; 
       } 
      }) 
     ] 
    } 
}) 

抛出以下错误:

ERROR in chunk vendor [entry] 
app-en.js 
Conflict: Multiple assets emit to the same filename app-en.js 

ERROR in chunk vendor [entry] 
app-ja.js 
Conflict: Multiple assets emit to the same filename app-ja.js 

有人可以帮助我?

回答

0

好吧,我改变了我的web.config.js象下面这样:

... 
     new webpack.optimize.CommonsChunkPlugin({ 
      name: 'vendor', 
      filename: 'vendor.js', 
      minChunks: function (module) { 
       return module.context && module.context.indexOf('node_modules') !== -1; 
      } 
     }) 
... 

和它的工作。我只是不确定它是否有效或正确。我关心的是地图功能。是否为每个语言环境写入vendor.js?