使用node glob匹配文件
使用node glob这个库可以很轻松地匹配指定的目录下的所有文件,例如
glob('src/**')
它表示匹配src
目录下的所有文件。但是需要注意的是它默认不匹配以.
开头的文件。如果需要匹配以.
开头的文件需要指定dot: true
这个配置项。
glob('src/**', { dot: true })
如果想忽略匹配某些目录,可以设置ignore
选项。
glob('src/**', { ignore: ['node_modules/**'], dot: true })
这表示匹配src
目录下的所有文件,包括以.
开头的文件,但是不包括node_modules
下的所有文件。
在这基础上如果给ignore
添加一个.
开头的文件忽略就会出现问题了。
如文件结构如下
.
└── test
├── .a
├── .b
│ ├── d.js
│ └── .f
└── c.txt
使用如下方式匹配
glob('test/**', { dot: true, ignore: ['.b/**'] })
输出结果
[
'test',
'test/.a',
'test/.b',
'test/.b/.f',
'test/.b/d.js',
'test/.c.txt'
]
期望结果是不匹配.b
目录下的所有文件,但是结果却仍然匹配到了.b
文件夹下的所有文件,这里设置的ignore
并没有生效。
这是因为.b
位于子文件夹,要给.b
前面也加上前缀通配符才可以。
glob('test/**', { dot: true, ignore: ['**/.b/**'] })
输出结果
[ 'test', 'test/.a', 'test/.c.txt' ]
如果您觉得本文对您有用,欢迎捐赠或留言~
- 本博客所有文章除特别声明外,均可转载和分享,转载请注明出处!
- 本文地址:https://www.leevii.com/?p=2595