-
Notifications
You must be signed in to change notification settings - Fork 3
/
webpack.config.production.js
77 lines (68 loc) · 1.82 KB
/
webpack.config.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
import webpack from 'webpack';
import ExtractTextPlugin from 'extract-text-webpack-plugin';
import merge from 'webpack-merge';
import { execSync } from 'child_process';
import CopyWebpackPlugin from 'copy-webpack-plugin';
import baseConfig from './webpack.config.base';
// Gather production dependencies to copy to `dist`
const deps = execSync('npm list --prod --parseable')
.toString()
.split(/\n/)
.map(line => line.replace(`${__dirname}/`, ''))
.filter(line => !!line && (line.match(/\//g) || []).length === 1);
const plugins = [
new CopyWebpackPlugin([
// Main Dependencies
{ from: 'main.js' },
{ from: 'app/app.html', to: 'app/app.html' },
{ from: 'app/viewer.html', to: 'app/viewer.html' },
// Theme Resources
{ from: 'themes', to: 'themes' },
{ from: 'node_modules/highlight.js/styles', to: 'themes/highlight-js' },
// Information
{ from: 'package.json' },
].concat(
// Add Additional Module Resources
deps.map(line => ({ from: line, to: line }))
))
];
const config = merge(baseConfig, {
devtool: 'cheap-module-source-map',
entry: {
bundle: './app/index',
viewer: './app/viewer',
},
output: {
publicPath: '../dist/',
},
module: {
loaders: [
{
test: /\.css$/,
loader: ExtractTextPlugin.extract(
'style',
[
'css',
'postcss',
]
)
},
],
},
plugins: [
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production'),
}),
new webpack.optimize.UglifyJsPlugin({
compressor: {
screw_ie8: true,
warnings: false
}
}),
new ExtractTextPlugin('style.css', { allChunks: true }),
...plugins,
],
target: 'electron-renderer'
});
export default config;