想象一下以下目录结构:
web/
sub1/
1.js
3.js
当我使用' del'节点模块删除文件或目录的行为
dir/* , dir/**, dir/**/*, dir/**/*.*
不同。
web/*
del([' web/*
','!web / sub1 / 1.js'])
- > web /下的所有内容都被删除,web / sub1 / 1.js也被删除了
del([' web/*
','!web / 3.js']})
- >除了3.js之外,web /下的所有内容都被删除了
web/**
del([' web/**
','!web / sub1 / 1.js']),del([' web/**
','!web / 3.js'])
- >两种形式的结果是相同的,web /被完全删除
web/**/*
del([' web/**/*
','!web / sub1 / 1.js'])
- > web /下的所有内容都被删除了
del([' web/**/*
','!web / 3.js']})
- >除了3.js之外,web /下的所有内容都被删除了
web/**/*.*
del([' web/**/*.*
','!web / sub1 / 1.js'])
- >除了web / sub / 1.js之外,web /下的所有文件都被删除,并保留了目录结构
del([' web/**/*.*
','!web / 3.js']})
- >除了3.js之外,web /下的所有文件都被删除了,目录结构保持不变
完成上述测试后,我完全感到困惑,我无法总结上述测试中的规则。我无法找到解释这些内容的详细文档。 有人可以帮忙吗?
答案 0 :(得分:0)
节点del使用node-glob来匹配目标,使用rimraf来移除匹配的目标。所有匹配的目标将传递给rimraf,rimraf将删除文件或递归删除目录。因此,您的问题的答案是您的模式匹配哪些目标。
幅/ *
所有子项都匹配:web/sub1
,web/3.js
。所有内容都将被删除,!web/sub1/1.js
不会排除任何内容。但是!web/3.js
会排除该文件,因此只会递归删除web/sub1
。
幅/ **
目录和所有嵌套项匹配:web
,web/sub1
,web/sub1/1.js
,web/3.js
。由于目录将以递归方式删除,因此任何文件排除都无效。
幅/ ** / *
匹配所有嵌套项:web/sub1
,web/sub1/1.js
,web/3.js
。 web/sub1
将以递归方式删除,排除!web/sub1/1.js
无关紧要。但是排除!web/3.js
会保留文件。
幅/**/*.*
仅匹配嵌套文件:web/sub1/1.js
,web/3.js
。因此,不会删除任何目录,并且排除文件会保留它。