express - gulp 任务等待快速服务器启动的更好方法
问题描述
需要 gulp 4.0.2 任务等待 express 4.17.1 服务器启动,然后打开浏览器。
这就是我所拥有的作品(但我认为这是相当古老的学校)......
// Start server in development or test mode
gulp.task('start:server', () => {
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
config = require(`./${serverPath}/config/environment`).default;
nodemon(`--inspect --trace-deprecation --trace-warnings -w ${serverPath} ${serverPath}`)
.on('log', onServerLog);
});
// Run nodemon with debugging (server/config/express.js runs webpack.make.js)
gulp.task('serve',
gulp.series(
gulp.parallel('eslint', 'eslint:tests', 'client:inject:scss', 'dist:client:assets:fonts', 'env:common'),
gulp.parallel('start:server', 'start:client'),
'watch'
)
);
// Perform HTTP GET to check for app readiness
function checkAppReady(cb) {
let options = {
host: 'localhost',
port: config.port
};
http.get(options, () => cb(true))
.on('error', () => cb(false));
}
// Check every 250ms until app server is ready
function whenServerReady(cb) {
let serverReady = false;
let appReadyInterval = setInterval(() =>
checkAppReady(ready => {
if(!ready || serverReady) {
return;
}
clearInterval(appReadyInterval);
serverReady = true;
cb();
}),
250);
}
// Wait until server is responding then open browser on client to our starting page
gulp.task('start:client', done => {
whenServerReady(() => {
opn(`http://localhost:${config.browserSyncPort}`/*, {app: 'google chrome'}*/);
done();
});
});
虽然这很好用,但我想知道是否有更简化的方法来完成同样的事情。关于这个主题的最后一篇 StackOverflow 帖子已经超过 3 年了。
解决方案
推荐阅读
- python - 如何在 numpy 或列表列表中填充圆圈
- php - 我应该如何在 Wordpress 中使用准备好的语句和查询中的变量?
- docker - 无法在 Kubernetes 上运行 SCDF 任务
- java - 动态参数重构
- c++ - const 参数不够 const
- javascript - 从 chrome 扩展访问 iframe
- node.js - 运行空白打字稿项目
- python - 为什么 boto3 无法始终在本地 DynamoDB 中找到我的表?
- sql - 用于 SQL 查询月份和年份的 Where 子句
- c# - 如何在 Mac 上将此 C# 代码部署为独立文件(相当于 .exe)?