我有这样的文件夹结构:
我需要缩小src /中的每个项目并将其移至dist /,而不会破坏文件夹结构。应该看起来像这样:
dist /
项目/
some-project /
第N个项目/(也已缩小)...
src /
感谢您的时间。
我用这样的东西解决了。如果有人要使用:
.pipe(gulp.dest(function(file){
let splittedUrl = file.history[0].split("\\");
let projectName = splittedUrl.slice(splittedUrl.indexOf("projects"),-1);
//console.log(projectName.join("/"));
return "dist/" + projectName.join("/");
}));
gulp.task("projectTest", () => {
return gulp.src("./src/projects/**/*.css")
// minify pipe, etc.
.pipe(gulp.dest('dist/projects'))
});
来自https://gulpjs.com/docs/en/api/concepts#glob-base:
glob base-有时称为glob parent-是路径段在全局字符串中的任何特殊字符之前。因此,全球基地
/src/js/**.js
的值为/src/js/
。所有与glob匹配的路径都是保证共享全局基数-路径段不能变量。
src()
生成的Vinyl实例是用glob base构建的设置为其base
属性。当用写入文件系统时dest()
,base
将从输出路径中删除以保留目录结构。
写起来有点令人困惑。在我的代码中,globstar **
之前的部分是base
。因此,./src/projects/
是基础。
在dest
管道中,目录结构(project1,project2等)仍然存在,但将被发送到dest
文件夹,而开头没有base
路径。因此,如果需要,您将需要将该base
路径的任何部分添加回dest
文件夹。
因此,gulp.dest('dist/projects')
根据需要将保留的文件夹结构放回到projects
下。