簡體   English   中英

無法了解gulp.src()的行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM