-
Notifications
You must be signed in to change notification settings - Fork 1
/
webpack.config.js
134 lines (118 loc) · 3.5 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
const webpack = require( 'webpack' );
const ExtractTextPlugin = require( 'extract-text-webpack-plugin' );
const path = require( 'path' ); // This resolves into the absolute path of the theme root.
const env = process.env.NODE_ENV;
// Change this if you don't want to minize the Javascript.
const minifyJs = true;
const postCss = {
loader: 'postcss-loader',
options: {
sourceMap: true
}
};
const cssLoader = {
loader: 'css-loader',
options: {
sourceMap: true,
minimize: true
}
};
const sassLoader = {
loader: 'sass-loader',
options: {
sourceMap: true
}
};
const config = {
entry: {
admin: './assets/admin/js/admin.js'
},
output: {
path: path.resolve( './assets/dist' ),
filename: '[name].js',
library: 'acftoggleflexiblefields',
libraryTarget: 'umd',
umdNamedDefine: true
},
externals: {
// Set jQuery to be an external resource.
'jquery': 'jQuery'
},
plugins: [
// Extract all css into one file.
new ExtractTextPlugin( '[name].css', {
allChunks: true
}),
// Provide jQuery instance for all modules.
new webpack.ProvidePlugin({
jQuery: 'jquery'
})
],
module: {
rules: [
{
test: /\.js$/,
include: [
path.resolve( __dirname, 'assets/admin/js' )
],
use: {
loader: 'babel-loader',
options: {
// Removes unneeded whitespace
compact: true,
// Do not use the .babelrc configuration file.
babelrc: false,
// The loader will cache the results of the loader in node_modules/.cache/babel-loader.
cacheDirectory: true,
// List enabled ECMAScript feature sets.
presets: [ 'env', 'stage-0' ],
// The 'transform-runtime' plugin tells babel to require the runtime instead of inlining it.
plugins: [ 'transform-runtime' ]
}
}
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
use: [ cssLoader, postCss ]
})
},
{
test: /\.scss$/,
use: ExtractTextPlugin.extract({
use: [ cssLoader, postCss, sassLoader ]
})
},
{
test: /\.(woff(2)?|eot|ttf|otf)(\?[a-z0-9=\.]+)?$/,
use: {
loader: 'url-loader?name=../fonts/[name].[ext]'
}
},
{
test: /\.(svg|gif|png|jpeg|jpg)(\?[a-z0-9=\.]+)?$/,
use: {
loader: 'url-loader?name=../images/[name].[ext]'
}
}
]
},
watchOptions: {
poll: 500
}
};
// Check if minifyJs has been set true and minify.
if ( minifyJs === true ) {
// Push minifying settings to the config.plugins object.
config.plugins.push(
new webpack.optimize.UglifyJsPlugin({
sourceMap: true,
parallel: true,
mangle: false,
compress: {
unused: false
}
})
);
}
module.exports = config;