2017-02-10 101 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?