我发现以下代码。那是正确的方法吗?如何整合?抱歉,我是JavaScript和Gulp的初学者。
const testFolder = 'dist/document/';
const fs = require('fs');
fs.readdirSync(testFolder).forEach(file => {
console.log(file);
});
'use strict';
// Modules & Plugins
var gulp = require('gulp');
const image = require('gulp-image');
var $ = require('gulp-load-plugins')();
// the path for example 'document/2006/Art1'
var articlePath = 'document/';
// I am currently entering the arrays individually :-/
let directories = [
'2006/Art1',
'2006/Art2',
'2010/Art1',
...
];
gulp.task('gulpTask', function () {
function singleDirectoryGulpTask(directoryName) {
return gulp
.src(articlePath + directoryName + '/media/*.{jpg,jpeg,png,gif}')
.pipe($.responsive({
'*.jpg': [
{ width: 400, rename: { suffix: '-4' } },
{ rename: { suffix: '-6' } },
],
}))
.pipe(image({
mozjpeg: ['-optimize'],
guetzli: ['--quality', 85],
concurrent: 10, quiet: false
}))
.pipe(gulp.dest('dist/'+ articlePath + directoryName + '/media'))
}
return merge(articleDirs.map(singleDirectoryGulpTask));
});
对您要尝试做的事情有所了解,但是这种常规形式可以起作用:
const subDirectories = fs.readdirSync('testFolder');
console.log(subDirectories);
gulp.task('default', (done) => {
subDirectories.forEach(function (directoryName) {
gulp.src(path.join(articlePath, directoryName, 'media', '*.{jpg,jpeg,png,gif}'))
// do your stuff
.pipe(gulp.dest(path.join('dist', articlePath, directoryName, 'media')))
});
done();
});