如何在小匹配中匹配一次html或js?

How to match html or js once in minimatch?

我正在为 gulp watch 编写 glob 模式,并希望在每次 html 或 js 更改时重建

# my first variant
> minimatch('src/app/app.js', 'src/app/**/*.(js|html)')
false # not working
> minimatch('src/app/app.js', 'src/app/**/*.+(js|html)')
true # this works
> minimatch('src/app/app.jsjs', 'src/app/**/*.+(js|html)')
true
# but also this works:
> minimatch('src/app/app.jsjsjsjsjs', 'src/app/**/*.+(js|html)')
true

如何正确地做,意思是只匹配html或js一次,就像在正则表达式中一样?

你要求它匹配一个或多个 (.js|.html) 你需要使用 @ 只匹配一个

minimatch('src/app/app.js', 'src/app/**/*.@(js|html)')

看起来你可以使用这个:

minimatch('src/app/app.js', 'src/app/**/*.{js,html}')