我在尝试复制一组文件时遇到了问题,当调用.dest('some folder')时,整个文件夹结构都丢失了.
我搜索并找到了一个答案,建议我应该提供解决此问题{base:'.'}的选项gulp.src(...).
gulp.src选项的文档只说它的选项是:
通过glob-stream传递给node-glob的选项.
展望其选择的节点水珠文档基地都没有被列入其中.
而glob-stream选项文档只说明了这一点
"默认值是在glob开始之前的所有内容(请参阅glob-parent)"
所以在这里也没什么帮助.
那么,base选项传递给gulp.src创建的流中的viny6l文件有什么影响gulp.dest?它如何影响命令?
Sve*_*ung 58
(你不看官方一饮而尽文档.http://github.com/arvindr21/gulp只是一些家伙的gulpjs GitHub库叉,官方回购是http://github.com/gulpjs/gulp/ 确实记录了基本选项的位置.)
回答你的问题:
如果您没有base自己指定选项,那么gulp.src()路径中第一个glob之前的所有内容都将自动用作base选项,并在写入目标文件夹时省略.
假设您有以下文件:
some/path/example/app/js/app.js
some/path/example/vendor/js/vendor.js
some/path/example/vendor/lib/js/lib.js
Run Code Online (Sandbox Code Playgroud)
这是你的Gulpfile.js:
gulp.src('some/path/**/js/*.js')
.pipe(gulp.dest('output'));
Run Code Online (Sandbox Code Playgroud)
在这种情况下,之前的所有内容**都会自动用作您的base选项.所以上面基本上等同于:
gulp.src('some/path/**/js/*.js', {base:'some/path/'})
.pipe(gulp.dest('output'));
Run Code Online (Sandbox Code Playgroud)
这意味着some/path/从每个匹配模式的文件的路径中剥离gulp.src().output文件夹中的结果结构如下所示:
output/example/app/js/app.js
output/example/vendor/js/vendor.js
output/example/vendor/lib/js/lib.js
Run Code Online (Sandbox Code Playgroud)
因此,源文件的目录结构的某些部分确实丢失了.丢失的目录结构有多少取决于gulp.src()模式中第一个glob的位置.
如果要避免这种情况,则必须明确指定base选项:
gulp.src('some/path/**/js/*.js', {base:'.'})
.pipe(gulp.dest('output'));
Run Code Online (Sandbox Code Playgroud)
现在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
Run Code Online (Sandbox Code Playgroud)
编辑:如果您传递一组模式,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'));
Run Code Online (Sandbox Code Playgroud)
相反,您必须遵循"在一个任务中使用多个源"配方.这允许您合并两个流,每个流都可以接收自己的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'));
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15680 次 |
| 最近记录: |