Deno --watch支持的文件通配符语法是什么?配置为何不生效?
Deno 1.32.1 --watch通配符不触发构建的解决办法
问题描述
在macOS上使用Deno 1.32.1执行命令:
deno run -A --watch=./**/*.html,./**/*.js src/build.js
发现仅src/build.js依赖图中的文件变更能触发构建,指定通配符匹配的文件修改后毫无反应。尝试给通配符加引号、单独使用单个通配符(不含逗号分隔)均无效。官方文档仅说明:
--watch[=
...]
Watch for file changes and restart process automatically.
Local files from entry point module graph are watched by default.
Additional paths might be watched by passing them as arguments to
this flag.
未明确<FILES>的正确语法规则。
解决办法
Deno 1.32.1的--watch参数不支持直接使用递归通配符**,也不允许用逗号分隔多个匹配规则,可通过以下两种方式解决:
多次指定--watch参数
为每个需要监听的路径规则单独添加--watch标识:deno run -A --watch=./**/*.html --watch=./**/*.js src/build.js借助Shell解析通配符
让macOS的bash/zsh先将通配符展开为具体文件路径,再传递给Deno:deno run -A --watch="$(find . -name '*.html' -o -name '*.js')" src/build.js文件数量不多时,也可直接用Shell原生通配符展开:
deno run -A --watch=./**/*.html --watch=./**/*.js src/build.js
补充说明
Deno 1.x早期版本对--watch的通配符支持不完善,递归通配符必须通过多次指定参数或Shell解析才能生效。若升级至1.40及以上版本,即可直接使用逗号分隔的多通配符路径,但1.32.1暂不支持该特性。
内容的提问来源于stack exchange,提问作者Misha Reyzlin
相关产品推荐
相关产品推荐

