npm-watch仅运行一次即退出 无法持续监听文件变更问题
问题根因
你的配置存在两个核心错误,导致文件监听逻辑根本没有启动:
scripts下的watch命令直接写的是node-sass单次编译指令,根本没有调用npm-watch本身。执行npm run watch时只会跑一次scss编译,编译完成进程自然就退出了,完全没有启动驻留的文件监听进程。- 顶层
watch字段的配置格式不符合npm-watch的规则:npm-watch不会直接读取全局的patterns/extensions配置,需要以你要触发的脚本名称作为键,单独给每个待触发任务配置监听规则。
修复方案
调整package.json的脚本和watch配置即可,修正后的配置参考:
{ "name": "limitless", "version": "1.0.0", "main": "index.js", "dependencies": { "autoprefixer": "^10.2.5" }, "devDependencies": { "jshint": "^2.10.3", "node": "14.16.0", "node-sass": "^5.0.0", "npm-watch": "^0.11.0", "uglify-js": "^3.16.1", "uglifycss": "^0.0.29" }, "watch": { "build:css": { "patterns": ["www/scss"], "extensions": ["scss"], "delay": "2000" } }, "scripts": { "build:css": "node-sass www/scss/theme.scss www/css/theme.css", "watch": "npm-watch" } }
调整后重新执行npm run watch,首次会自动跑一次build:css完成编译,之后进程会持续驻留,监听目录下的scss文件变更时会自动重新触发编译。
补充说明:如果你不需要启动watch时自动执行一次编译,可以在对应任务的watch配置里添加
"runOnLaunch": false参数。
内容的提问来源于stack exchange,提问作者Čamo
相关产品推荐
相关产品推荐

