问题第 1 部分:输出到嵌套的动态文件夹
我使用Gulp.js进行图形电子邮件开发。我的雇主正在切换到不同的营销平台,这要求我们的电子邮件模板位于不同的文件夹结构中。当 gulp.src 使用通配符时,我无法输出到嵌套文件夹。感谢您的帮助!
这是 gulp.src 文件夹的简化示例:
build/template1/template1.html
build/template2/template2.html
build/template3/template4.html
build/template4/template4.html
这是 gulp.src 文件夹的简化示例:
build/template1/theme/html/template1.html
build/template2/theme/html/template2.html
build/template3/theme/html/template4.html
build/template4/theme/html/template4.html
我想为动态模板文件夹做通配符之类的事情......
gulp.task('moveFile', function(){
return gulp.src('./build/*/*.html')
.pipe(gulp.dest('./build/*/theme/html'));
});
...但通配只适用于 gulp.src。使用全局 gulp.src 时如何输出到动态文件夹?我能得到的最接近的是将 /theme 文件夹放在与模板文件夹相同的级别,而不是根据需要放在每个文件夹中。
感谢您的帮助!
问题第 2 部分:将*重命名的文件*输出到嵌套的动态文件夹
Mark 回答了我的问题(感谢@Mark!),但我过度简化了我的用例,所以我添加了第 2 部分。
除了嵌套文件,我还需要重命名它。(我最初让这部分工作,但不能让这两个部分一起工作。)参考 gulp-rename 文档,我做了 3 次不同的尝试。它是如此接近,但我会感谢更多的帮助。:-)
// ATTEMPT 1: Using gulp-rename mutating function method
gulp.task('createTwig', function(){
return gulp.src('./build/*/*.html')
.pipe(rename(
function (path) {
path.basename = "email";
path.extname = ".html.twig";
},
function (file) {
console.log(file.dirname);
file.dirname = nodePath.join(file.dirname, 'theme/html');
}
))
.pipe(gulp.dest('./build/'));
});
// ATTEMPT 2: Using gulp-rename fixed object method
gulp.task('createTwig', function(){
return gulp.src('./build/*/*.html', { base: process.cwd() })
.pipe(rename(
{
basename: "email",
extname: ".html.twig"
},
function (file) {
console.log(file.dirname);
file.dirname = nodePath.join(file.dirname, 'theme/html');
}
))
.pipe(gulp.dest('./build/'));
});
// ATTEMPT 3: Using gulp-rename mutating function method
gulp.task('createTwig', function(){
return gulp.src('./build/*/*.html')
.pipe(rename(
function (path, file) {
path.basename = "email";
path.extname = ".html.twig";
console.log(file.dirname);
file.dirname = nodePath.join(file.dirname, 'theme/html');
}
))
.pipe(gulp.dest('./build/'));
});