2017-02-20 61 views
1

所以code splitting是創造不同的包的技術 - 使應用程序,供應商等等的WebPack使用廠商塊node_modules沒有明確說明他們

我知道我想在我的vendor束而只是按照慣例.. 。

任何

import x from 'name'; 
import 'name'; 

這些需要在vendor,因爲(我認爲他們是)從node_modules清楚地到來。

但是,我只看到明確說明這一點的例子。

有沒有辦法使用約定?

如果沒有,我可以建立一個插件來做到這一點(這個插件可以進入你的依賴部分package.json)?

回答

3

你可以做的是這樣的:

const pkg = require('./package.json');

,並在您的配置:

{ 
    entry: { 
     vendor: Object.keys(pkg.dependencies) // use node_module dependencies 
    }, 
    plugins: [ 
    new webpack.optimize.CommonsChunkPlugin({ 
     name: "vendor" 
    }) 
    ] 
} 

編輯: 似乎有更好的方式來做到這一點。人們可以在CommonsChunkPlugin插件中使用minChunks屬性。你可以通過一個功能都有,例如:

plugins: [ 
    new webpack.optimize.CommonsChunkPlugin({ 
     name: "vendor", 
     minChunks: ({ resource }) => { 
      return resource && resource.match(/\.js$/) && resource.indexOf('node_modules') >= 0; 
     } 
    }) 
] 

通過這樣做,你不需要靠的package.json列表的WebPack上只考慮在項目中使用的依賴關係。整齊。

+0

感覺有點奇怪做到這一點,但作品 - 我很好:) –

+0

@CallumLinington檢查我更新的答案,我發現另一種方式 –