// vim: set tw=80 ts=2 sw=2 sts=2: const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); const helpers = require('./helpers'); module.exports = { entry: { 'polyfills': './src/polyfills.ts', 'vendor': './src/vendor.ts', 'app': './src/main.ts', 'styles': './src/main.scss' }, resolve: { extensions: ['.ts', '.js'], }, 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$/, use: [ { loader: 'awesome-typescript-loader', options: { configFileName: helpers.root('src', 'tsconfig.json') } }, 'angular2-template-loader' ] }, { test: /\.html$/, include: helpers.root('src'), loader: 'html-loader' }, { test: /\.css$/, exclude: helpers.root('src'), loader: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader?sourceMap' }) }, { test: /\.css$/, include: helpers.root('src'), loader: 'css-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]' }] }, optimization: { splitChunks: { name: true } }, 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 ), new HtmlWebpackPlugin({ template: 'src/index.ejs' }) ], };