Yet another webpack plugin for Broccoli. This one relies on webpack's caching, but does it in a way that works well as a broccoli plugin (letting webpack write to the cache folder and then symlinking from that to the final output folder as needed).
This means it should be fast and compatible with other Broccoli plugins (unlike myfreeweb/broccoli-webpack and rafales/broccoli-webpack-fast)
Note, internally this uses the PreventResolveSymlinkPlugin to prevent Webpack's symlink resolution behavior from breaking relative paths inside of symlinked modules. But you can disable that by passing in the preventSymlinkResolution: false
option (some context in this thread).
Using
Inside your Brocfile.js
:
var webpack = require('webpack');
var mergeTrees = require('broccoli-merge-trees');
var WebpackFilter = require('broccoli-webpack-cached');
var webpackModulesTree = WebpackFilter(inputTree, {
entry: {
one: "./entry.js",
two: "./entry2.js",
},
output: {
filename: "[name]-bundle.js",
chunkFilename: "[id]-chunk-bundle.js"
},
externals: {
jquery: 'jQuery'
},
devtool: 'cheap-module-inline-source-map',
plugins: [
new webpack.optimize.CommonsChunkPlugin("extra.bundle.js"),
new ExtractTextPlugin("[name].css", {
allChunks: false
})
],
module: {
preLoaders: [
{
test: /\.js$/,
loaders: ["source-map-loader"]
}
],
loaders: [{
test: /\.css$/,
loader: ExtractTextPlugin.extract("style-loader", "css-loader?sourceMap")
}]
}
});
module.exports = mergeTrees([otherOutputTree, webpackModulesTree]);