2017-11-07 22:45:59 +01:00
|
|
|
// vim: set tw=80 ts=2 sw=2 sts=2:
|
|
|
|
|
2017-11-07 22:41:52 +01:00
|
|
|
var webpack = require('webpack');
|
|
|
|
var HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
|
|
var ExtractTextPlugin = require('extract-text-webpack-plugin');
|
|
|
|
var helpers = require('./helpers');
|
|
|
|
|
|
|
|
module.exports = {
|
2017-11-07 22:45:59 +01:00
|
|
|
entry: {
|
|
|
|
'polyfills': './src/polyfills.ts',
|
|
|
|
'vendor': './src/vendor.ts',
|
|
|
|
'app': './src/main.ts',
|
|
|
|
'styles': './src/main.scss'
|
|
|
|
},
|
2017-11-07 22:41:52 +01:00
|
|
|
|
2017-11-07 22:45:59 +01:00
|
|
|
resolve: {
|
|
|
|
extensions: ['.ts', '.js'],
|
|
|
|
},
|
2017-11-07 22:41:52 +01:00
|
|
|
|
2017-11-07 22:45:59 +01:00
|
|
|
module: {
|
|
|
|
rules: [{
|
|
|
|
enforce: 'pre',
|
|
|
|
test: /webpack\.config\.js$/,
|
|
|
|
include: helpers.root('src', 'app'),
|
|
|
|
loader: 'eslint-loader',
|
|
|
|
options: {
|
|
|
|
useEslintrc: false,
|
|
|
|
emitWarning: true,
|
|
|
|
emitError: true,
|
|
|
|
failOnWarning: true,
|
|
|
|
failOnError: true,
|
|
|
|
baseConfig: 'webpack',
|
|
|
|
rules: {
|
|
|
|
indent: ['error', 4]
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}, {
|
|
|
|
// Javascript
|
|
|
|
enforce: 'pre',
|
|
|
|
test: /\.jsx?$/,
|
|
|
|
include: helpers.root('src', 'app'),
|
|
|
|
loader: 'eslint-loader',
|
|
|
|
options: {
|
|
|
|
useEslintrc: false,
|
|
|
|
emitWarning: false,
|
|
|
|
emitError: true,
|
|
|
|
failOnWarning: false,
|
|
|
|
failOnError: true,
|
|
|
|
baseConfig: 'angular',
|
|
|
|
rules: {
|
|
|
|
indent: ['error', 4]
|
|
|
|
},
|
|
|
|
plugins: [
|
|
|
|
'angular',
|
|
|
|
'html',
|
|
|
|
'security',
|
|
|
|
'this',
|
|
|
|
'jquery',
|
|
|
|
'promise'
|
|
|
|
]
|
|
|
|
},
|
|
|
|
// }, {
|
|
|
|
// test: /\.jsx?$/,
|
|
|
|
// exclude: /node_modules/,
|
|
|
|
// loader: 'babel-loader'
|
|
|
|
}, {
|
|
|
|
test: /\.ts?$/,
|
|
|
|
//exclude: /node_modules/,
|
|
|
|
use: [
|
|
|
|
{
|
|
|
|
loader: 'awesome-typescript-loader',
|
|
|
|
options: { configFileName: helpers.root('src', 'tsconfig.json') }
|
|
|
|
},
|
|
|
|
'angular2-template-loader'
|
|
|
|
]
|
|
|
|
}, {
|
|
|
|
test: /\.html$/,
|
|
|
|
loader: 'html-loader'
|
|
|
|
}, {
|
|
|
|
test: /\.less$/,
|
|
|
|
use: [
|
|
|
|
'style-loader',
|
|
|
|
'css-loader',
|
|
|
|
'less-loader',
|
|
|
|
]
|
|
|
|
}, {
|
|
|
|
test: /\.css$/,
|
|
|
|
exclude: helpers.root('src', 'app'),
|
|
|
|
loader: ExtractTextPlugin.extract({
|
|
|
|
fallback: 'style-loader',
|
|
|
|
use: 'css-loader?sourceMap'
|
|
|
|
})
|
|
|
|
}, {
|
|
|
|
test: /\.css$/,
|
|
|
|
include: helpers.root('src', 'app'),
|
|
|
|
loader: 'raw-loader'
|
|
|
|
}, {
|
|
|
|
test: /\.scss$/,
|
|
|
|
use: [
|
|
|
|
'style-loader',
|
|
|
|
'css-loader',
|
|
|
|
'sass-loader',
|
|
|
|
]
|
|
|
|
}, {
|
|
|
|
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
|
|
|
|
loader: 'file-loader?name=assets/[name].[hash].[ext]'
|
|
|
|
}]
|
|
|
|
},
|
2017-11-07 22:41:52 +01:00
|
|
|
|
2017-11-07 22:45:59 +01:00
|
|
|
plugins: [
|
|
|
|
// Workaround for angular/angular#11580
|
|
|
|
new webpack.ContextReplacementPlugin(
|
|
|
|
// The (\\|\/) piece accounts for path separators in *nix and Windows
|
|
|
|
/angular(\\|\/)core(\\|\/)@angular/,
|
|
|
|
helpers.root('./src'), // location of your src
|
|
|
|
{} // a map of your routes
|
|
|
|
),
|
2017-11-07 22:41:52 +01:00
|
|
|
|
2017-11-07 22:45:59 +01:00
|
|
|
new webpack.optimize.CommonsChunkPlugin({
|
|
|
|
name: ['app', 'vendor', 'polyfills']
|
|
|
|
}),
|
2017-11-07 22:41:52 +01:00
|
|
|
|
2017-11-07 22:45:59 +01:00
|
|
|
new HtmlWebpackPlugin({
|
|
|
|
template: 'src/index.ejs'
|
|
|
|
})
|
|
|
|
],
|
2017-11-07 22:41:52 +01:00
|
|
|
};
|