3
時,Webpack忽略代碼拆分我有一個使用react-router來渲染React視圖服務器端的節點應用程序。我的問題是,我使用require.ensure
在客戶端執行代碼拆分,但不希望在編譯我的服務器端代碼時發生代碼拆分。這是我的WebPack配置:當目標節點爲
{
entry: path.join(__dirname, '../server/app.js'),
target: 'node',
output: {
path: './',
filename: 'server.js'
},
module: {
loaders: [
{ test: /\.js$/, loader: 'babel', exclude: /node_modules/ },
{ test: /\.hbs$/, loader: 'handlebars-loader', include: /client/ }
]
},
externals: nodeModules
}
當我運行它,我得到server.js,1.server.js,2.server.js,等我寧願只是有一個server.js文件。
在每個路由文件我的頂部:
if (typeof require.ensure !== 'function') require.ensure = (d, c) => c(require);
,當我在開發中使用require('babel/register')
其中一期工程,但我寧願有生產編譯的文件。
謝謝!像魅力一樣工作。 – Brad
但是你有React的問題,校驗和在服務器端呈現的HTML和客戶端上生成的HTML之間不匹配,從而失去了服務器端呈現的許多「優點」。即服務器和客戶端都呈現不同的HTML。另外,我甚至不知道如何在客戶端上有條件地從嵌入在DOM中的不同js包(您只爲給定路徑呈現)加載,而現在不觸發主包來包含相同的文件。看起來它只能通過爲每條路線創建入口點,而不是'確保'。 –