gulp - 咕噜SRC | 负片没有按预期工作
问题描述
我试图了解 gulp 的工作原理,尤其是如何选择文件,所以我进行了一些测试。但结果并不像他们应该的那样。
有人可以解释一下为什么我会得到这些结果,以及它是否是预期的结果。
文件集
assets
|-script01.js
|--sub01
|-script02.js
|-script03.js
|--sub02
|-script04.js
|--sub03
|-script05.js
我的目标是不获取除所有 sub02 文件夹之外的所有文件。看起来很简单:)
gulpfile.js
const { src, dest } = require('gulp');
exports.test01 = function() {
return src(['assets/**/*', '!assets/sub02'])
.pipe(dest('output/'))
}
但输出是
// output
// |-script01.js
// |--sub01
// |-script02.js
// |-script03.js
// |--sub02
// |-script04.js
// |--sub03
// |-script05.js
所以我进行了不同的测试,比如
exports.test02 = function() {
return src(['assets/**/*', '!assets/sub02/*'])
.pipe(dest('output/'))
}
哪个输出是
output
|-script01.js
|--sub01
|-script02.js
|-script03.js
|--sub02
|--sub03
|-script05.js
然后我尝试了这个
exports.test03 = function() {
return src(['assets/**/*', '!assets/sub02/**/*'])
.pipe(dest('output/'))
}
这在逻辑上导致
output
|-script01.js
|--sub01
|-script02.js
|-script03.js
|--sub02
最后我明白了如何完成我想要的
exports.test04 = function() {
return src(['assets/**/*', '!assets/sub02/**/*', '!assets/sub02'])
.pipe(dest('output/'))
}
耶!
output
|-script01.js
|--sub01
|-script02.js
|-script03.js
但是关于文档(gulp,https ://gulpjs.com/docs/en/getting-started/explaining-globs ),我应该能够完成测试01
exports.test05 = function() {
return src(['**/*.js', '!node_modules/'])
.pipe(dest('output/'))
}
// Result : all directories and their .js files in output
// including node_mudules ones.
这是一个额外的问题。运行测试,我尝试了这个。但也没有用。为什么 ?
// --- BONUS QUESTION
exports.bonus = function() {
return src(['assets/**/*', '!assets/sub02/**/*', 'assets/sub02/script04.js'])
.pipe(dest('output/'))
}
output
|-script01.js
|--sub01
|-script02.js
|-script03.js
|--sub02
* script04.js missing :( *
如果你想快速测试它:
mkdir -p assets assets/sub01 assets/sub02/sub03 output;
touch assets/script01.js assets/sub01/script02.js assets/sub01/script03.js assets/sub02/script04.js assets/sub02/sub03/script05.js
提前谢谢了 !
编辑
经过进一步调查,这适用于
exports.test01 = function() {
return src(['assets/**/*.js', '!assets/sub02/**/*.js'])
.pipe(dest('output/'))
}
// output
// |-script01.js
// |--sub01
// |-script02.js
// |-script03.js
据我了解,** 包括 assets/sub02 文件夹作为文件夹。因此 dest 将文件夹复制为文件夹,除非在 src first glob 中首先选择的所有文件都被否定。有什么想法吗 ?
解决方案
推荐阅读
- ms-access - VBA - 如何在报告视图之间翻转时阻止代码执行
- powershell - 即使分配了新值,变量也会保持先前的值
- html - 删除太多字段后验证 Angular 表单的问题
- pandas - 如何在python中对2个索引进行排序
- r - RShiny:使用数据框列表中的值自动填充 selectInput?
- python - 如何在特定单词之前计算否定词或肯定词 - Python 中的情绪分析?
- sql - 从 Line 中提取 n 个坐标 - Bigquery
- reporting-services - SSRS 报告运行缓慢
- pandas - 如果熊猫中的NaN,如何将1添加到以前的数据
- reactjs - 模块解析失败:意外的令牌,您可能需要适当的加载器来处理此文件类型