-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.production.js
104 lines (92 loc) · 2.3 KB
/
webpack.production.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
var path = require('path');
var webpack = require('webpack');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var CopyWebpackPlugin = require('copy-webpack-plugin');
var postcss = require('postcss-loader');
var autoprefixer = require('autoprefixer');
var mqpacker = require('css-mqpacker');
// array of framework/libraries that should go to vendor.build.js
var vendors = [
'angular',
'angular-ui-router',
'angularfire',
'firebase'
];
var production = {
addVendor: function (x) {
// function for adding data into vendor build
x.forEach(function(element) {
this.entry.vendors.push(element);
}, this);
},
resolve: {
root: path.resolve('./src')
},
entry: {
vendors: [],
app: './src/app.ts'
},
output: {
pathinfo: false,
path: __dirname + '/dist',
filename: '[name].bundle.js',
chunkFilename: '[id].bundle.js',
libraryTarget: 'var',
library: 'Futuun'
},
module: {
loaders: [
{
test: /\.ts$/,
exclude: __dirname + '/node_modules',
loader: 'ts'
},
{
test: /\.htm$/,
loader: 'html'
},
{
test: /\.html$/,
loader: 'ngtemplate?relativeTo=' + (path.resolve(__dirname, './src')) + '/!html'
},
{
test: /\.scss$/,
loader: ExtractTextPlugin.extract('css?sourceMap&-minimize!postcss!sass?sourceMap')
},
{
test: /\.(png|jpe?g)$/,
loader: 'url?limit=10000'
}
]
},
postcss: [
autoprefixer({browsers: ['last 2 versions']}),
mqpacker({sort: true}),
],
ts: {
// speed up compilation, use VS Code to see errors
transpileOnly: true,
silent: true
},
plugins: [
new ExtractTextPlugin('style.css', {allChunks: false}),
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV' : JSON.stringify('production')
}
}),
new webpack.optimize.CommonsChunkPlugin({
names: ['vendors'],
filename: '[name].bundle.js',
}),
new webpack.optimize.DedupePlugin(),
new webpack.optimize.UglifyJsPlugin({
compress: {warnings: false}
}),
new webpack.optimize.AggressiveMergingPlugin()
],
debug: true,
devtool: '#source-map'
};
production.addVendor(vendors);
module.exports = production;