Skip to content

Commit 437d45a

Browse files
authored
Merge pull request #59 from ice-lab/fix-devserver-compatible
fix: compatible with webpack-dev-server v3
2 parents bcaf487 + 516cefa commit 437d45a

File tree

4 files changed

+41
-10
lines changed

4 files changed

+41
-10
lines changed

packages/build-scripts/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 1.1.1
4+
5+
- [fix] compatible with webpack-dev-server v3
6+
37
## 1.1.0
48

59
- [refactor] support custom command by extend Context

packages/build-scripts/bin/child-process-start.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,12 @@ const defaultPort = parseInt(DEFAULT_PORT || 3333, 10);
4848
});
4949

5050
['SIGINT', 'SIGTERM'].forEach(function(sig) {
51-
process.on(sig, function() {
52-
devServer.close();
51+
process.on(sig, async function() {
52+
if (devServer.close) {
53+
devServer.close();
54+
} else if (devServer.stop) {
55+
await devServer.stop();
56+
}
5357
process.exit(0);
5458
});
5559
});

packages/build-scripts/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "build-scripts",
3-
"version": "1.1.0",
3+
"version": "1.1.1",
44
"license": "MIT",
55
"description": "scripts core",
66
"main": "lib/index.js",

packages/build-scripts/src/service/start.ts

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -86,27 +86,50 @@ export = async function(context: Context, options?: IRunOptions): Promise<void |
8686
stats,
8787
});
8888
});
89+
90+
let devServer: WebpackDevServer;
8991
// require webpack-dev-server after context setup
9092
// context may hijack webpack resolve
9193
// eslint-disable-next-line @typescript-eslint/no-var-requires
9294
const DevServer = require('webpack-dev-server');
93-
const devServer: WebpackDevServer = new DevServer(devServerConfig, compiler);
95+
96+
// static method getFreePort in v4
97+
if (DevServer.getFreePort) {
98+
devServer = new DevServer(devServerConfig, compiler);
99+
} else {
100+
devServer = new DevServer(compiler, devServerConfig);
101+
}
94102

95103
await applyHook(`before.${command}.devServer`, {
96104
url: serverUrl,
97105
urls,
98106
devServer,
99107
});
100-
101-
devServer.startCallback(
102-
() => {
103-
applyHook(`after.${command}.devServer`, {
108+
if (devServer.startCallback) {
109+
devServer.startCallback(
110+
() => {
111+
applyHook(`after.${command}.devServer`, {
112+
url: serverUrl,
113+
urls,
114+
devServer,
115+
});
116+
},
117+
);
118+
} else {
119+
devServer.listen(devServerConfig.port, devServerConfig.host, async (err: Error) => {
120+
if (err) {
121+
log.info('WEBPACK',chalk.red('[ERR]: Failed to start webpack dev server'));
122+
log.error('WEBPACK', (err.stack || err.toString()));
123+
}
124+
await applyHook(`after.${command}.devServer`, {
104125
url: serverUrl,
105126
urls,
106127
devServer,
128+
err,
107129
});
108-
},
109-
);
130+
});
131+
}
132+
110133

111134
return devServer;
112135
};

0 commit comments

Comments
 (0)