运行 来自 npm 脚本的后台 http 服务器

Running http-server in background from an npm script

如何从 npm 脚本在后台启动 http-server 以便另一个 npm 脚本,例如Mocha test using jsdom,可以向 http-server 发出 HTTP 请求吗?

http-server 软件包安装有:

npm install http-server --save-dev

package.json 文件包含:

"scripts": {
   "pretest": "gulp build-httpdocs",
   "test": "http-server -p 7777 httpdocs/ && mocha spec.js"
},

运行 npm test 成功启动了 http-server,当然命令在显示后挂起:

Starting up http-server, serving httpdocs/
Available on:
  http://127.0.0.1:7777
  http://192.168.1.64:7777
Hit CTRL-C to stop the server

是否有启动 Web 服务器的简单方法,使其不会阻止 Mocha 测试?

奖励:摩卡测试运行后如何关闭http-server

您可以 运行 通过在末尾附加 & 后台进程。 然后使用 npm 提供给我们的 postscript 挂钩,以终止后台进程。

"scripts": {
    "web-server": "http-server -p 7777 httpdocs &",
    "pretest": "gulp build-httpdocs && npm run web-server",
    "test": "mocha spec.js",
    "posttest": "pkill -f http-server"
}

但是如果我有多个 http-server 运行ning 呢?

您可以通过在 posttest 脚本中指定其端口来终止进程:

    "posttest": "kill $(lsof -t -i:7777)"

现在 Windows,语法不同,据我所知 npm 不支持多个 OS 脚本。为了支持多个,我最好的选择是一个 gulp 任务,它将处理每个 OS 不同的任务。

大概跨平台的问题可以通过npm-run-all

解决