-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebpack.config.babel.js
122 lines (113 loc) · 2.74 KB
/
webpack.config.babel.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
import path from 'path'
import webpack from 'webpack'
import HtmlWebpackPlugin from 'html-webpack-plugin'
import ExtractTextPlugin from 'extract-text-webpack-plugin'
const extractStyle = new ExtractTextPlugin('css/bundle.[hash:8].css')
const DEBUG = process.env.NODE_ENV !== 'production' ? true : false
const rootPath = __dirname
const publicPath = path.join(rootPath, 'public')
const babelQueries = [
'presets[]=es2015',
'presets[]=stage-0',
'presets[]=react',
]
let loaders = [
{
test: /\.(png|jpg|gif)$/,
loader: 'url-loader?limit=10000&name=images/build/[name].[hash:8].[ext]',
},
{
test: /\.css$/,
loaders: [ 'style-loader', 'css-loader?root=' + publicPath ],
},
]
let plugins = [
new webpack.optimize.OccurrenceOrderPlugin(),
new HtmlWebpackPlugin({
filename: DEBUG ? 'index.html' : '../index.html',
template: './public/views/index.html',
inject: true,
}),
]
if (DEBUG) {
loaders = [
...loaders,
{
test: /\.es$/,
exclude: /(node_modules|bower_components)/,
loaders: [ 'react-hot-loader', 'babel-loader?' + babelQueries.join(',') ],
// loaders: ['react-hot', 'babel?presets[]=es2015,presets[]=stage-0,presets[]=react'],
},
{
test: /\.scss$/,
loaders: [
'style-loader',
'css-loader?sourceMap&root=' + publicPath,
//'postcss',
'sass-loader?sourceMap&sourceMapContents',
],
exclude: /node_modules/,
//include: path.join(__dirname, 'style/scss/sass'),
},
]
plugins = [
...plugins,
new webpack.HotModuleReplacementPlugin(),
]
} else {
loaders = [
...loaders,
{
test: /\.es$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader?' + babelQueries.join(','),
},
{
test: /\.scss/,
loaders: extractStyle.extract([ 'css-loader?root=' + publicPath, 'sass-loader' ]),
},
]
plugins = [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': '"production"'
}
}),
extractStyle,
new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false } }),
]
}
let webpackConfig = {
entry: [
// 'webpack-hot-middleware/client',
'./public/src/index',
'./public/style/main',
],
output: {
path: path.resolve(publicPath, 'assets'),
publicPath: '/assets/',
filename: 'js/bundle.[hash:8].js',
},
resolve: {
extensions: [ '.es', '.js', '.scss' ],
},
module: {
loaders,
},
plugins,
}
if (DEBUG) {
// webpackConfig.output.publicPath = baseUrl + '/assets/'
webpackConfig = {
...webpackConfig,
// debug: true,
devtool: 'source-map',
devServer: {
hot: true,
historyApiFallback: {
index: '/assets/index.html',
},
},
}
}
export default webpackConfig