Skip to content

Commit edcd8a2

Browse files
authored
Merge pull request #932 from davidmehren/webpack-4
Upgrade to Webpack 4
2 parents 7749a72 + c66aa60 commit edcd8a2

File tree

8 files changed

+3490
-1807
lines changed

8 files changed

+3490
-1807
lines changed

.babelrc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
{
22
"presets": [
3-
"es2015"
3+
["env", {
4+
"targets": {
5+
"node": "6",
6+
"uglify": true
7+
}
8+
}]
49
],
510
"plugins": [
611
"transform-runtime"

package.json

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -154,35 +154,36 @@
154154
"url": "https://github.com/hackmdio/codimd.git"
155155
},
156156
"devDependencies": {
157-
"babel-cli": "^6.18.0",
158-
"babel-core": "^6.21.0",
159-
"babel-loader": "^6.2.10",
160-
"babel-plugin-transform-runtime": "^6.15.0",
161-
"babel-polyfill": "^6.22.0",
162-
"babel-preset-es2015": "^6.18.0",
163-
"babel-runtime": "^6.20.0",
164-
"copy-webpack-plugin": "^4.0.1",
165-
"css-loader": "^0.26.1",
157+
"babel-cli": "^6.26.0",
158+
"babel-core": "^6.26.3",
159+
"babel-loader": "^7.1.4",
160+
"babel-plugin-transform-runtime": "^6.23.0",
161+
"babel-polyfill": "^6.26.0",
162+
"babel-preset-env": "^1.7.0",
163+
"babel-runtime": "^6.26.0",
164+
"copy-webpack-plugin": "^4.5.2",
165+
"css-loader": "^1.0.0",
166166
"doctoc": "^1.3.0",
167-
"ejs-loader": "^0.3.0",
168-
"exports-loader": "^0.6.3",
169-
"expose-loader": "^0.7.1",
170-
"extract-text-webpack-plugin": "^1.0.1",
171-
"file-loader": "^0.9.0",
172-
"html-webpack-plugin": "^2.25.0",
173-
"imports-loader": "^0.7.0",
174-
"json-loader": "^0.5.4",
167+
"ejs-loader": "^0.3.1",
168+
"exports-loader": "^0.7.0",
169+
"expose-loader": "^0.7.5",
170+
"file-loader": "^2.0.0",
171+
"html-webpack-plugin": "^4.0.0-alpha",
172+
"imports-loader": "^0.8.0",
175173
"jsonlint": "^1.6.2",
176174
"less": "^2.7.1",
177-
"less-loader": "^2.2.3",
178-
"optimize-css-assets-webpack-plugin": "^1.3.0",
179-
"script-loader": "^0.7.0",
175+
"less-loader": "^4.1.0",
176+
"mini-css-extract-plugin": "^0.4.1",
177+
"optimize-css-assets-webpack-plugin": "^5.0.0",
178+
"script-loader": "^0.7.2",
180179
"standard": "^9.0.1",
181180
"string-loader": "^0.0.1",
182-
"style-loader": "^0.13.1",
183-
"url-loader": "^0.5.7",
184-
"webpack": "^1.14.0",
185-
"webpack-parallel-uglify-plugin": "^0.2.0"
181+
"style-loader": "^0.21.0",
182+
"uglifyjs-webpack-plugin": "^1.2.7",
183+
"url-loader": "^1.0.1",
184+
"webpack": "^4.14.0",
185+
"webpack-cli": "^3.1.0",
186+
"webpack-parallel-uglify-plugin": "^1.1.0"
186187
},
187188
"standard": {
188189
"globals": [

public/views/includes/header.ejs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<% for (var css in htmlWebpackPlugin.files.css) { %>
2-
<link href="<%= webpackConfig.output.baseUrl %><%= htmlWebpackPlugin.files.css[css] %>" rel="stylesheet">
2+
<link href="<%= webpackConfig.output.baseUrl %><%= htmlWebpackPlugin.files.css[css].path %>" rel="stylesheet">
33
<% } %>

public/views/includes/scripts.ejs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<script src="<%= webpackConfig.output.baseUrl %>/config"></script>
2-
<% for (var chunk in htmlWebpackPlugin.files.chunks) { %>
3-
<script src="<%= webpackConfig.output.baseUrl %><%= htmlWebpackPlugin.files.chunks[chunk].entry %>" defer></script>
2+
<% for (var js in htmlWebpackPlugin.files.js) { %>
3+
<script src="<%= webpackConfig.output.baseUrl %><%= htmlWebpackPlugin.files.js[js].path %>" defer></script>
44
<% } %>

webpack.config.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
var baseConfig = require('./webpackBaseConfig')
2-
var ExtractTextPlugin = require('extract-text-webpack-plugin')
2+
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
33
var path = require('path')
44

55
module.exports = [Object.assign({}, baseConfig, {
66
plugins: baseConfig.plugins.concat([
7-
new ExtractTextPlugin('[name].css')
7+
new MiniCssExtractPlugin({
8+
filename: '[name].css',
9+
chunkFilename: '[id].css'
10+
})
11+
812
]),
913
devtool: 'source-map'
1014
}), {
@@ -13,15 +17,15 @@ module.exports = [Object.assign({}, baseConfig, {
1317
htmlExport: path.join(__dirname, 'public/js/htmlExport.js')
1418
},
1519
module: {
16-
loaders: [{
20+
rules: [{
1721
test: /\.css$/,
18-
loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
22+
use: ['style-loader', 'css-loader']
1923
}, {
2024
test: /\.scss$/,
21-
loader: ExtractTextPlugin.extract('style-loader', 'sass-loader')
25+
use: ['style-loader', 'sass-loader']
2226
}, {
2327
test: /\.less$/,
24-
loader: ExtractTextPlugin.extract('style-loader', 'less-loader')
28+
use: ['style-loader', 'less-loader']
2529
}]
2630
},
2731
output: {
@@ -30,6 +34,8 @@ module.exports = [Object.assign({}, baseConfig, {
3034
filename: '[name].js'
3135
},
3236
plugins: [
33-
new ExtractTextPlugin('html.min.css')
37+
new MiniCssExtractPlugin({
38+
filename: 'html.min.css'
39+
})
3440
]
3541
}]

webpack.production.js

Lines changed: 43 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,46 @@
11
var baseConfig = require('./webpackBaseConfig')
22
var webpack = require('webpack')
33
var path = require('path')
4-
var ExtractTextPlugin = require('extract-text-webpack-plugin')
5-
var OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin')
6-
var ParallelUglifyPlugin = require('webpack-parallel-uglify-plugin')
4+
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
5+
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
6+
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
77

88
module.exports = [Object.assign({}, baseConfig, {
99
plugins: baseConfig.plugins.concat([
1010
new webpack.DefinePlugin({
1111
'process.env': {
1212
'NODE_ENV': JSON.stringify('production')
1313
}
14-
}),
15-
new ParallelUglifyPlugin({
16-
uglifyJS: {
17-
compress: {
18-
warnings: false
19-
},
20-
output: {
21-
max_line_len: 1000000
22-
},
23-
mangle: false,
24-
sourceMap: false
25-
}
26-
}),
27-
new ExtractTextPlugin('[name].[hash].css')
14+
})
2815
]),
2916

17+
optimization: {
18+
minimizer: [
19+
new UglifyJsPlugin({
20+
parallel: true,
21+
cache: true
22+
})
23+
],
24+
splitChunks: {
25+
chunks: 'async',
26+
minChunks: Infinity
27+
}
28+
},
29+
3030
output: {
3131
path: path.join(__dirname, 'public/build'),
3232
publicPath: '/build/',
33-
filename: '[id].[name].[hash].js',
34-
baseUrl: '<%- url %>'
33+
filename: '[id].[name].[hash].js'
34+
// baseUrl: '<%- url %>'
3535
}
3636
}), {
37+
// This Chunk is used in the 'save as html' feature.
38+
// It is embedded in the html file and contains CSS for styling.
39+
3740
entry: {
3841
htmlExport: path.join(__dirname, 'public/js/htmlExport.js')
3942
},
40-
module: {
41-
loaders: [{
42-
test: /\.css$/,
43-
loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
44-
}, {
45-
test: /\.scss$/,
46-
loader: ExtractTextPlugin.extract('style-loader', 'sass-loader')
47-
}, {
48-
test: /\.less$/,
49-
loader: ExtractTextPlugin.extract('style-loader', 'less-loader')
50-
}]
51-
},
43+
5244
output: {
5345
path: path.join(__dirname, 'public/build'),
5446
publicPath: '/build/',
@@ -60,7 +52,24 @@ module.exports = [Object.assign({}, baseConfig, {
6052
'NODE_ENV': JSON.stringify('production')
6153
}
6254
}),
63-
new ExtractTextPlugin('html.min.css'),
64-
new OptimizeCssAssetsPlugin()
65-
]
55+
new MiniCssExtractPlugin({
56+
filename: 'html.min.css'
57+
})
58+
],
59+
60+
optimization: {
61+
minimizer: [
62+
new OptimizeCSSAssetsPlugin({})
63+
]
64+
},
65+
66+
module: {
67+
rules: [{
68+
test: /\.css$/,
69+
use: [
70+
MiniCssExtractPlugin.loader,
71+
'css-loader'
72+
]
73+
}]
74+
}
6675
}]

0 commit comments

Comments
 (0)