Gulp watch为何无法监听带点前缀的.default等隐藏文件夹内的文件变更
问题根因
你配置的./app/**/*.sass通配符遵循gulp底层依赖的glob默认匹配规则:默认会直接跳过以.为前缀的隐藏目录与隐藏文件。.default文件夹属于典型的带点前缀隐藏目录,**通配符默认仅遍历非隐藏子目录,不会进入该文件夹内部匹配对应的.sass文件,因此无法监测到内部文件的变更。
解决方案
可通过两种方式修改配置实现对隐藏文件夹的监听,优先推荐第一种方案:
- 方法一:在
gulp.watch的配置项中开启dot参数,放开隐藏路径的匹配限制
该方式无需修改原有通配符写法,仅需在watch方法中新增对应配置,修改后的代码如下:
配置作用:gulp.task('watch', function() { // 新增 { dot: true } 配置,允许匹配带点前缀的隐藏文件/目录 gulp.watch('./app/**/*.sass', { dot: true }, gulp.parallel('sass')); gulp.watch('./app/**/*.js', { dot: true }, gulp.parallel('js')); });dot: true会让底层glob匹配器将带点前缀的文件、文件夹视为普通路径遍历,不再默认跳过。 - 方法二:手动调整通配符规则,显式声明匹配隐藏目录
若不想新增全局配置,也可修改通配符写法覆盖隐藏目录的匹配逻辑,示例代码:
该写法容易出现通配符边界匹配错误,非必要不建议使用。gulp.task('watch', function() { gulp.watch('./app/{,**/}.*/**/*.sass', gulp.parallel('sass')); gulp.watch('./app/{,**/}.*/**/*.js', gulp.parallel('js')); });
内容的提问来源于stack exchange,提问作者Viktor K.
相关产品推荐
相关产品推荐

