如何让nodemon在同一进程中运行服务器并重新编译SCSS?
当然可以搞定!你不用再开两个终端来回折腾啦,下面给你几个实用的方案,把服务器监听和SCSS自动编译的任务整合到一个窗口里运行:
方案1:用并行脚本工具(推荐)
这种方式能让两个任务独立运行:服务器文件变更时重启服务器,SCSS文件变更时只编译CSS,互不干扰,而且日志还能清晰区分。
方法A:使用concurrently
- 先安装依赖:
npm install concurrently --save-dev
- 修改你的
package.json脚本:
"scripts": { "watch": "nodemon ./bin/www", "watch-css": "node-sass -w scss -o public/css", "dev": "concurrently --names \"SERVER,CSS\" --prefix-colors \"blue,green\" \"npm run watch\" \"npm run watch-css\"" }
- 运行命令:
npm run dev
这样终端会用不同颜色分别显示服务器和CSS编译的日志,一目了然,而且关闭终端时所有子进程会被自动终止,不会留下残留进程。
方法B:使用npm-run-all
如果更习惯用npm官方生态的工具,可以用npm-run-all:
- 安装依赖:
npm install npm-run-all --save-dev
- 修改脚本:
"scripts": { "watch": "nodemon ./bin/www", "watch-css": "node-sass -w scss -o public/css", "dev": "run-p watch watch-css" }
- 运行
npm run dev即可,run-p是run parallel的缩写,意思是并行运行指定的脚本。
方案2:让nodemon兼顾编译与重启(适合简单场景)
如果你不在乎SCSS变更时服务器也跟着重启,可以让nodemon同时监听JS和SCSS文件,每次文件变更时先编译CSS再启动服务器:
- 可以直接修改
package.json的脚本:
"scripts": { "dev": "nodemon --watch ./bin/www --watch scss --ext js,scss --exec \"node-sass scss -o public/css && node ./bin/www\"" }
或者创建nodemon.json配置文件:
{ "watch": ["./bin/www", "scss/"], "ext": "js,scss", "exec": "node-sass scss -o public/css && node ./bin/www" }
然后脚本改成:
"scripts": { "dev": "nodemon" }
- 运行
npm run dev即可。
注意:这个方案的缺点是,哪怕只是修改了SCSS文件,服务器也会重启一次,如果你觉得这种重启没必要,还是优先选方案1。
内容的提问来源于stack exchange,提问作者alexcs
相关产品推荐
相关产品推荐

