93 строки
2.3 KiB
JavaScript
93 строки
2.3 KiB
JavaScript
var webpack = require('webpack');
|
|
var webpackMerge = require('webpack-merge');
|
|
var ExtractTextPlugin = require('extract-text-webpack-plugin');
|
|
var helpers = require('./helpers');
|
|
var HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
var path = require('path');
|
|
const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
|
|
|
|
module.exports = {
|
|
devtool: 'source-map',
|
|
entry: {
|
|
'polyfills': './src/polyfills.ts',
|
|
'vendor': './src/vendor.ts',
|
|
'app': './src/main.ts'
|
|
},
|
|
|
|
resolve: {
|
|
extensions: ['.ts', '.js'],
|
|
alias: {
|
|
jquery: "jquery/src/jquery"
|
|
}
|
|
},
|
|
output: {
|
|
path: helpers.root('dist'),
|
|
publicPath: '',
|
|
filename: '[name].[hash].js',
|
|
chunkFilename: '[id].[hash].chunk.js'
|
|
},
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.ts$/,
|
|
loaders: [
|
|
{
|
|
loader: 'awesome-typescript-loader',
|
|
options: { configFileName: helpers.root('src', 'tsconfig.json') }
|
|
}, 'angular2-template-loader'
|
|
]
|
|
},
|
|
{
|
|
test: /\.html$/,
|
|
loader: 'html-loader'
|
|
},
|
|
{
|
|
test: /\.(png|jpe?g|gif|cur|svg|woff|woff2|ttf|eot|ico)$/,
|
|
loader: 'file-loader?name=assets/[name].[hash].[ext]'
|
|
},
|
|
{
|
|
test: /\.css$/,
|
|
exclude: helpers.root('src', 'app'),
|
|
loader: ExtractTextPlugin.extract({ fallback: 'style-loader', loader: 'css-loader?sourceMap' })
|
|
},
|
|
{
|
|
test: /\.css$/,
|
|
include: helpers.root('src', 'app'),
|
|
loader: 'raw-loader'
|
|
}
|
|
]
|
|
},
|
|
plugins: [
|
|
// Workaround for angular/angular#11580
|
|
new webpack.ContextReplacementPlugin(
|
|
/angular(\\|\/)core(\\|\/)@angular/,
|
|
path.resolve(__dirname, '../src')
|
|
),
|
|
|
|
new webpack.optimize.CommonsChunkPlugin({
|
|
name: ['app', 'vendor', 'polyfills']
|
|
}),
|
|
|
|
new HtmlWebpackPlugin({
|
|
template: 'src/index.html'
|
|
}),
|
|
new webpack.NoEmitOnErrorsPlugin(),
|
|
new webpack.optimize.UglifyJsPlugin({ // https://github.com/angular/angular/issues/10618
|
|
mangle: {
|
|
keep_fnames: true
|
|
}
|
|
}),
|
|
new ExtractTextPlugin('[name].[hash].css'),
|
|
new webpack.DefinePlugin({
|
|
'process.env': {
|
|
'ENV': JSON.stringify(ENV)
|
|
}
|
|
}),
|
|
new webpack.LoaderOptionsPlugin({
|
|
htmlLoader: {
|
|
minimize: false // workaround for ng2
|
|
}
|
|
})
|
|
]
|
|
};
|