2016-03-18 85 views
1

是否可以配置webpack不編譯反應內捆綁文件?我希望在一個頁面中有更多的反應應用程序,我只想加載反應庫一次以獲得最小尺寸。如何實現這一目標?反應webpack創建捆綁分離的反應

回答

0

在相同的情況下,我創建了包含所有小型「應用程序」+ React的最終捆綁包一次。

// components/index.js (webpacks entry point) 
require("expose?React!react"); 
require("expose?MarketProductListing!./MarketProductListing"); 
require("expose?ProductDetail!./ProductDetail"); 
require("expose?MarketSearch!./MarketSearch"); 

然後,我包括通過<script/>標籤捆綁JS。現在

<script src="js/components.bundle.js"></script> 

,我可以訪問React, MarketProductListing, ...組件JS並使它們需要的地方。

如您所見,我使用了Webpack的expose-loader

的WebPack配置

var path = require('path'); 
var webpack = require('webpack'); 

const js_dir = path.join(__dirname, 'src'); 

module.exports = { 
    devtool: 'eval', 
    entry: { 
    components: path.join(js_dir, 'components'), 
    }, 
    output: { 
    path: js_dir, 
    filename: '[name].bundle.js' 
    }, 
    plugins: [ 
    new webpack.ProvidePlugin({ 
     'es6-promise': 'es6-promise', 
     'fetch': 'imports?this=>global!exports?global.fetch!whatwg-fetch' 
    }) 
    ], 
    module: { 
    loaders: [ 
     { test: /\.js$/, loaders: ['babel'] } 
    ] 
    }, 
    resolve: { 
    extensions: ['', '.js', '.json'] 
    } 
}; 
+0

你能告訴我你生產的WebPack的配置嗎? – Dawe

+0

添加了Webpack配置 – Andreyco

+0

如果您是通過一個項目完成這項工作的,我不會看到您通過此操作獲得的收益。如果您是從多個項目中完成這項工作,那麼最好將React標記爲peerDependency並將您的替代項目標記爲模塊。 – Sinistralis