gpt4 book ai didi

gulp - 基本选项如何影响gulp.src和gulp.dest

转载 作者:行者123 更新时间:2023-12-03 09:04:12 28 4
gpt4 key购买 nike

我在尝试复制一组文件时遇到问题,并且在调用.dest('some folder')时,整个文件夹结构丢失了。

我搜索并找到答案,建议我在调用{base:'.'}时应提供gulp.src(...)作为选项,以解决此问题。

documentation for gulp.src options仅表示其选项为:

Options to pass to node-glob through glob-stream.



根本没有列出 node-glob documentation for its options base。
而且 glob-stream options documentation仅声明

"the Default is everything before a glob starts (see glob-parent)"



因此,这里也没有太大帮助。

那么,传递给 basegulp.src选项对创建的流中的viny6l文件有什么影响?它如何影响 gulp.dest命令?

最佳答案

(您没有看官方的gulp文档。http://github.com/arvindr21/gulp只是gulpjs github存储库的一部分。官方存储库是http://github.com/gulpjs/gulp/,其中base option is indeed documented。)

要回答您的问题:

如果您自己未指定base选项,那么gulp.src()路径中第一个全局字符之前的所有内容都会自动用作base选项,并在写入目标文件夹时被忽略。

假设您有以下文件:

some/path/example/app/js/app.js
some/path/example/vendor/js/vendor.js
some/path/example/vendor/lib/js/lib.js

这是您的Gulpfile.js:
gulp.src('some/path/**/js/*.js')
.pipe(gulp.dest('output'));

在这种情况下, **之前的所有内容都会自动用作 base选项。因此,以上内容基本上等同于此:
gulp.src('some/path/**/js/*.js', {base:'some/path/'})
.pipe(gulp.dest('output'));

这意味着从与 some/path/中的模式匹配的每个文件的路径中删除 gulp.src()output文件夹中的结果结构如下所示:
output/example/app/js/app.js
output/example/vendor/js/vendor.js
output/example/vendor/lib/js/lib.js

因此,您的源文件目录结构的某些部分确实丢失了。您丢失多少目录结构取决于 gulp.src()模式中的第一个全局文件所在的位置。

如果要避免这种情况,则必须明确指定 base选项:
gulp.src('some/path/**/js/*.js', {base:'.'})
.pipe(gulp.dest('output'));

现在 some/path/不会从文件路径中剥离,从而在 output中产生以下文件夹结构:
output/some/path/example/app/js/app.js
output/some/path/example/vendor/js/vendor.js
output/some/path/example/vendor/lib/js/lib.js

编辑:如果将模式数组传递给 gulp.src(),则无法为每个数组元素指定不同的 base选项。例如,这将不起作用:
gulp.src(
['source1/examples/**/*.html',
'source2/examples/**/*.html'],
{ base: ['source1/', // Doesn't work.
'source2/']} // Needs to be a string.
).pipe(gulp.dest('dist'));

相反,您必须遵循 "Using multiple sources in one task" recipe。这使您可以合并两个流,每个流都可以接收自己的 base选项:
var merge = require('merge-stream');

gulp.task('default', function() {
merge(gulp.src('source1/examples/**/*.html', {base: 'source1/'}),
gulp.src('source2/examples/**/*.html', {base: 'source2/'}))
.pipe(gulp.dest('dist'));
});

关于gulp - 基本选项如何影响gulp.src和gulp.dest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35845039/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com