generator-summon
Version:
Set of small and composable generators
82 lines (76 loc) • 1.79 kB
JavaScript
var webpack = require('webpack');
var path = require('path');
<% if(useBower){ %>
// Find bower path
var fs = require('fs');
var bowerConfig = path.join(__dirname, '.bowerrc');
var bowerPath = 'bower_components';
try {
if (fs.statSync(bowerConfig)) {
var bowerrc = JSON.parse(fs.readFileSync(bowerConfig, 'utf-8'));
if (bowerrc.directory) {
bowerPath = path.join(__dirname, bowerrc.directory);
}
}
} catch (ex) {}
<% } %>
// Detect environment
var isProduction = process.env.NODE_ENV === 'production';
// Create config
var config = {
entry: {
'<%=entryFileName%>': './src/<%=entryFileName%>.js'
},
output: {
path: path.join(__dirname, 'dist'),
filename: '[name].js'
},
module: {
loaders: [
{
test: /\.json$/,
loader: 'json-loader'
},
{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel', // 'babel-loader' is also a legal name to reference
query: {
presets: ['react', 'es2015'],
plugins: ['transform-object-assign']
}
}
]
},
<% if (useBower) { %>
resolve: {
modulesDirectories: ['node_modules', bowerPath]
},
plugins: [
new webpack.ResolverPlugin(
new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin('bower.json', ['main'])
)
],
<% } else { %>
plugins: [],
<% } %>
devtool: isProduction ? undefined : 'eval'
};
if (isProduction) {
config.plugins.push(
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify('production')
}
})
);
config.plugins.push(
new webpack.optimize.UglifyJsPlugin({
report: 'min',
compress: true,
preserveComments: false,
mangle: true
})
);
}
module.exports = config;