forked from invertium/django-cms
-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
101 lines (96 loc) · 3.31 KB
/
webpack.config.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
var webpack = require('webpack');
module.exports = function (opts) {
'use strict';
var PROJECT_PATH = opts.PROJECT_PATH;
var CMS_VERSION = opts.CMS_VERSION;
var debug = opts.debug;
var baseConfig = {
devtool: false,
watch: !!opts.watch,
entry: {
// CMS frontend
'toolbar': PROJECT_PATH.js + '/toolbar.js',
// CMS admin
'admin.base': PROJECT_PATH.js + '/admin.base.js',
'admin.pagetree': PROJECT_PATH.js + '/admin.pagetree.js',
'admin.changeform': PROJECT_PATH.js + '/admin.changeform.js',
// CMS widgets
// they will load the on-demand bundle called admin.widget
'forms.pageselectwidget': PROJECT_PATH.js + '/widgets/forms.pageselectwidget.js',
'forms.slugwidget': PROJECT_PATH.js + '/widgets/forms.slugwidget.js',
'forms.pagesmartlinkwidget': PROJECT_PATH.js + '/widgets/forms.pagesmartlinkwidget.js',
'forms.apphookselect': PROJECT_PATH.js + '/widgets/forms.apphookselect.js'
},
output: {
path: PROJECT_PATH.js + '/dist/' + CMS_VERSION + '/',
filename: 'bundle.[name].min.js',
chunkFilename: 'bundle.[name].min.js',
jsonpFunction: 'cmsWebpackJsonp'
},
plugins: [
// this way admin.pagetree bundle won't
// include deps already required in admin.base bundle
new webpack.optimize.CommonsChunkPlugin({
name: 'admin.base',
chunks: [
'admin.pagetree',
'admin.changeform'
]
})
],
resolve: {
extensions: ['', '.js'],
alias: {
jquery: PROJECT_PATH.js + '/libs/jquery.min.js',
classjs: PROJECT_PATH.js + '/libs/class.min.js',
jstree: PROJECT_PATH.js + '/libs/jstree/jstree.min.js'
}
},
module: {
loaders: [
{
test: /(modules\/jquery|libs\/pep|select2\/select2)/,
loaders: [
'imports?jQuery=jquery'
]
},
{
test: /class.min.js/,
loaders: [
'exports?Class'
]
},
{
test: /.html$/,
loaders: [
'raw'
]
}
]
}
};
if (debug) {
baseConfig.devtool = 'inline-source-map';
baseConfig.plugins = baseConfig.plugins.concat([
new webpack.NoErrorsPlugin(),
new webpack.DefinePlugin({
__DEV__: 'true'
})
]);
} else {
baseConfig.plugins = baseConfig.plugins.concat([
new webpack.DefinePlugin({
__DEV__: 'false'
}),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.DedupePlugin(),
new webpack.optimize.UglifyJsPlugin({
comments: false,
compressor: {
drop_console: true // eslint-disable-line
}
})
]);
}
return baseConfig;
};