Files
JavaScriptServices/templates/AureliaSpa/webpack.config.js
2016-10-28 11:16:21 +01:00

65 lines
2.0 KiB
JavaScript

var isDevBuild = process.argv.indexOf('--env.prod') < 0;
var path = require('path');
var webpack = require('webpack');
var AureliaWebpackPlugin = require('aurelia-webpack-plugin');
var srcDir = path.resolve('./ClientApp');
var rootDir = path.resolve();
var outDir = path.resolve('./wwwroot/dist');
var baseUrl = '/';
var project = require('./package.json');
var aureliaModules = Object.keys(project.dependencies).filter(dep => dep.startsWith('aurelia-'));
// Configuration for client-side bundle suitable for running in browsers
var clientBundleConfig = {
resolve: { extensions: [ '.js', '.ts' ] },
devtool: isDevBuild ? 'inline-source-map' : null,
entry: {
'app': [], // <-- this array will be filled by the aurelia-webpack-plugin
'aurelia-modules': aureliaModules
},
output: {
path: outDir,
publicPath: '/dist',
filename: '[name]-bundle.js'
},
module: {
loaders: [
{
test: /\.ts$/,
include: /ClientApp/,
loader: 'ts',
query: {silent: true}
}, {
test: /\.html$/,
exclude: /index\.html$/,
loader: 'html-loader'
}, {
test: /\.css$/,
loaders: ['style-loader', 'css-loader']
}, {
test: /\.(png|woff|woff2|eot|ttf|svg)$/,
loader: 'url-loader?limit=100000'
}
]
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery', // because 'bootstrap' by Twitter depends on this
jQuery: 'jquery'
}),
new AureliaWebpackPlugin({
root: rootDir,
src: srcDir,
baseUrl: baseUrl
}),
new webpack.optimize.CommonsChunkPlugin({
name: ['aurelia-modules']
}),
].concat(isDevBuild ? [] : [
// Plugins that apply in production builds only
new webpack.optimize.UglifyJsPlugin()
])
};
module.exports = [clientBundleConfig];