[英]Can not understand behavior of gulp.src()
這是我的代碼:
'use strict';
var gulp = require('gulp'),
$ = require('gulp-load-plugins')(),
module.exports = function(options) {
gulp.task('test', function () {
gulp.src('external/bower_components/bootstrap-sass-official/assets/stylesheets/_bootstrap.scss')
.pipe(gulp.dest('dist/'));
});
};
此字符串gulp.dest('dest /')將文件_bootstrap.scss保存在'dest /'文件夾中。
如果我更改字符串
gulp.src('external/bower_components/bootstrap-sass-official/assets/stylesheets/_bootstrap.scss')
串
gulp.src('external/*/bootstrap-sass-official/assets/stylesheets/_bootstrap.scss')
然后串
gulp.dest('dest/')
會將文件_bootstrap.scss保存在dest / bower_components / bootstrap-sass-official / assets / stylesheets文件夾中。
您能否解釋一下並給我鏈接,以了解為什么在第一種情況下dest文件夾內沒有很多文件夾,而在第二種情況下dest文件夾內有很多文件夾?
如果我理解正確,在第二種情況下,全局模式將轉換為完整文件路徑的數組。 這意味着在我的示例glob nodejs模塊中,會將glob模式'external / * / bootstrap-sass-official / assets / stylesheets / _bootstrap.scss'轉換為數組['external / bower_components / bootstrap-sass-official / assets / stylesheets / _bootstrap.scss']。 那么,為什么我在第二種情況下的“ dest /”文件夾中有很多嵌套文件夾,而在第一種情況下的“ dest /”文件夾中卻沒有嵌套文件夾?
確實,這有點奇怪,因為node-glob的行為非常隱式。 但是實際上這是您想要的。 例如,考慮到您在external
有多個文件夾的情況,這兩個文件夾都具有文件bootstrap-sass-official/assets/stylesheets/_bootstrap.scss')
。 這樣,您將無法在目標中保存兩個具有相同名稱的文件。
無需研究node-glob源,我認為它可以通過在/*/
之后切掉文件路徑來緩解這種情況,並將其自動附加到您的dest
路徑。
話雖如此,這是隱式的行為,如果您確實需要數組或將來要添加文件,則可以通過為自己分配數組gulp.src(['firstfile.js'])
來輕松避免這種情況。
由於Gulp文檔沒有提供有關遍歷模式的太多信息,因此我發現這些鏈接是最好的幫助。 閱讀有關node-glob和有關Gulping的Gulp的信息 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.