在gulp中使用fs.readdirSync的正确方法,如何将其集成?

问题描述 投票:0回答:1

我目前正在单独输入数组,有没有办法读取“目录”?

我发现以下代码。那是正确的方法吗?如何整合?抱歉,我是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));
});
javascript node.js gulp
1个回答
0
投票

对您要尝试做的事情有所了解,但是这种常规形式可以起作用:

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();
});
© www.soinside.com 2019 - 2024. All rights reserved.