Skip to content

Commit b3cc910

Browse files
committed
Modern config only for local dev, fixing multi-compiler issues with HRM
Reference “Multi-compiler mode, hot-update.json 404” -> webpack/webpack-dev-server#2355 Signed-off-by: Andrew Welch <[email protected]>
1 parent c313beb commit b3cc910

File tree

1 file changed

+62
-111
lines changed

1 file changed

+62
-111
lines changed

buildchain/webpack.dev.js

Lines changed: 62 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
// webpack.dev.js - developmental builds
2-
const LEGACY_CONFIG = 'legacy';
3-
const MODERN_CONFIG = 'modern';
42

53
// node modules
64
const merge = require('webpack-merge');
@@ -16,7 +14,7 @@ const pkg = require('./package.json');
1614
const settings = require('./webpack.settings.js');
1715

1816
// Configure the webpack-dev-server
19-
const configureDevServer = (buildType) => {
17+
const configureDevServer = () => {
2018
return {
2119
public: settings.devServerConfig.public(),
2220
contentBase: path.resolve(__dirname, settings.paths.templates),
@@ -38,121 +36,74 @@ const configureDevServer = (buildType) => {
3836
};
3937

4038
// Configure Image loader
41-
const configureImageLoader = (buildType) => {
42-
if (buildType === LEGACY_CONFIG) {
43-
return {
44-
test: /\.(png|jpe?g|gif|svg|webp)$/i,
45-
use: [
46-
{
47-
loader: 'file-loader',
48-
options: {
49-
name: 'img/[name].[ext]'
50-
}
51-
}
52-
]
53-
};
54-
}
55-
if (buildType === MODERN_CONFIG) {
56-
return {
57-
test: /\.(png|jpe?g|gif|svg|webp)$/i,
58-
use: [
59-
{
60-
loader: 'file-loader',
61-
options: {
62-
name: 'img/[name].[ext]'
63-
}
39+
const configureImageLoader = () => {
40+
return {
41+
test: /\.(png|jpe?g|gif|svg|webp)$/i,
42+
use: [
43+
{
44+
loader: 'file-loader',
45+
options: {
46+
name: 'img/[name].[ext]'
6447
}
65-
]
66-
};
67-
}
48+
}
49+
]
50+
};
6851
};
6952

7053
// Configure the Postcss loader
71-
const configurePostcssLoader = (buildType) => {
72-
// Don't generate CSS for the legacy config in development
73-
if (buildType === LEGACY_CONFIG) {
74-
return {
75-
test: /\.(pcss|css)$/,
76-
loader: 'ignore-loader'
77-
};
78-
}
79-
if (buildType === MODERN_CONFIG) {
80-
return {
81-
test: /\.(pcss|css)$/,
82-
use: [
83-
{
84-
loader: 'style-loader',
85-
},
86-
{
87-
loader: 'vue-style-loader',
88-
},
89-
{
90-
loader: 'css-loader',
91-
options: {
92-
importLoaders: 2,
93-
sourceMap: true
94-
}
95-
},
96-
{
97-
loader: 'resolve-url-loader'
98-
},
99-
{
100-
loader: 'postcss-loader',
101-
options: {
102-
sourceMap: true,
103-
config: {
104-
path: path.resolve(__dirname),
105-
}
54+
const configurePostcssLoader = () => {
55+
return {
56+
test: /\.(pcss|css)$/,
57+
use: [
58+
{
59+
loader: 'style-loader',
60+
},
61+
{
62+
loader: 'vue-style-loader',
63+
},
64+
{
65+
loader: 'css-loader',
66+
options: {
67+
importLoaders: 2,
68+
sourceMap: true
69+
}
70+
},
71+
{
72+
loader: 'resolve-url-loader'
73+
},
74+
{
75+
loader: 'postcss-loader',
76+
options: {
77+
sourceMap: true,
78+
config: {
79+
path: path.resolve(__dirname),
10680
}
10781
}
108-
]
109-
};
110-
}
82+
}
83+
]
84+
};
11185
};
11286

11387
// Development module exports
114-
module.exports = [
115-
merge(
116-
common.legacyConfig,
117-
{
118-
output: {
119-
filename: path.join('./js', '[name]-legacy.js'),
120-
publicPath: settings.devServerConfig.public() + '/',
121-
},
122-
mode: 'development',
123-
devtool: 'inline-source-map',
124-
devServer: configureDevServer(LEGACY_CONFIG),
125-
module: {
126-
rules: [
127-
configurePostcssLoader(LEGACY_CONFIG),
128-
configureImageLoader(LEGACY_CONFIG),
129-
],
130-
},
131-
plugins: [
132-
new webpack.HotModuleReplacementPlugin(),
133-
],
134-
}
135-
),
136-
merge(
137-
common.modernConfig,
138-
{
139-
output: {
140-
filename: path.join('./js', '[name].js'),
141-
publicPath: settings.devServerConfig.public() + '/',
142-
},
143-
mode: 'development',
144-
devtool: 'inline-source-map',
145-
devServer: configureDevServer(MODERN_CONFIG),
146-
module: {
147-
rules: [
148-
configurePostcssLoader(MODERN_CONFIG),
149-
configureImageLoader(MODERN_CONFIG),
150-
],
151-
},
152-
plugins: [
153-
new webpack.HotModuleReplacementPlugin(),
154-
new DashboardPlugin(),
88+
module.exports = merge(
89+
common.modernConfig,
90+
{
91+
output: {
92+
filename: path.join('./js', '[name].js'),
93+
publicPath: settings.devServerConfig.public() + '/',
94+
},
95+
mode: 'development',
96+
devtool: 'inline-source-map',
97+
devServer: configureDevServer(),
98+
module: {
99+
rules: [
100+
configurePostcssLoader(),
101+
configureImageLoader(),
155102
],
156-
}
157-
),
158-
];
103+
},
104+
plugins: [
105+
new webpack.HotModuleReplacementPlugin(),
106+
new DashboardPlugin(),
107+
],
108+
}
109+
);

0 commit comments

Comments
 (0)