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

Match all files, except ones with specific extensions

如何修复 ./src/js/**/!(*.spec.js|*.test.js),使其不包含 return 目录?我试过这样./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

基本上你想排除你的情况下的文件夹,这可以通过在末尾添加 (^/) 来完成。

完整的 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.