匹配所有文件,具有特定扩展名的文件除外

时间:2019-03-05 18:21:05

标签: npm wildcard glob minmatch

如何修复./src/js/**/!(*.spec.js|*.test.js),使其不返回目录?我已经像./src/js/**/*.!(spec.js|test.js)这样尝试过,但是它匹配除目录之外的所有文件,与./src/js/**/*相同。 ./src/js/**/!(*.spec.js|*.test.js)的示例输出:

[ './src/js/__tests__',
  './src/js/__tests__/example.js',
  './src/js/example.js',
  './src/js/index.js' ]

所需的输出:

[ './src/js/__tests__/example.js',
  './src/js/example.js',
  './src/js/index.js' ]

glob版本7.1.3

1 个答案:

答案 0 :(得分:1)

基本上,您希望排除案件中的文件夹,这可以通过在末尾添加(^/)来完成。

完整的glob应该为./src/js/**/!(*.spec.js|*.test.js|^/)

您可以验证微匹配语法here

更新:

使用npm模块glob时,有一个选项称为nodir。如果将其设置为true,则输出中将没有任何目录路径。

示例:

var glob = require("glob")

glob("./src/js/**/!(*.spec.js|*.test.js)", { nodir: true }, (er, files) => {
  console.log(er, files)
})

您可以找到有关所有可用选项in their section about options.

的更多信息