Gulp 吞咽-压缩子文件夹的内容&;以他们的名字命名这些档案

Gulp 吞咽-压缩子文件夹的内容&;以他们的名字命名这些档案,gulp,gulp-zip,Gulp,Gulp Zip,我想使用Gulp&Gulp-zip来: 压缩/lessons/文件夹的每个子文件夹 在原始文件夹名称之后命名每个存档。因此,归档文件夹/lessons/1-hermit-crab/应命名为1-hermit-crab.zip 将所有这些存档移到/lessons/文件夹中 我已经开始这样做了,但是由于无法检索ziped目录的名称而陷入困境,因此我可以将其用作存档名称。所以我现在将档案保存在子文件夹中 谢谢你的帮助 gulp.task('zip-lessons', function() { /

我想使用Gulp&Gulp-zip来:

  • 压缩
    /lessons/
    文件夹的每个子文件夹
  • 在原始文件夹名称之后命名每个存档。因此,归档文件夹
    /lessons/1-hermit-crab/
    应命名为
    1-hermit-crab.zip
  • 将所有这些存档移到
    /lessons/
    文件夹中
  • 我已经开始这样做了,但是由于无法检索ziped目录的名称而陷入困境,因此我可以将其用作存档名称。所以我现在将档案保存在子文件夹中

    谢谢你的帮助

    gulp.task('zip-lessons', function() {
        // Get an array of subdirectories under ./lessons/
        var subDirectories = glob.sync('./lessons/*/');
        // For each directory…
        subDirectories.forEach(function (subDirectory) {
            return gulp.src(subDirectory + '**')
                .pipe(zip('lesson.zip'))
                .pipe(gulp.dest(subDirectory));
        });
    });
    

    您可以使用节点的
    路径
    模块获取子目录的名称,如下所示:

    const path = require('path');
    const dirName = path.parse('./folderA/folderB').base // -> 'folderB'
    
    并将目录名传递给
    zip()


    我的同事为我提供了这个有效的解决方案,所以我现在正在使用它

    const gulp = require('gulp');
    const zip = require('gulp-zip');
    
    var fs = require('fs');
    var path = require('path');
    
    // Functions
    
    function getFolders(dir) {
        return fs.readdirSync(dir)
          .filter(function(file) {
            return fs.statSync(path.join(dir, file)).isDirectory();
          });
    }
    
    // Tasks
    
    // Zip each folder in /lessons and place the archive in the /lessons root
    gulp.task('zip-lessons', () => {
        let folders = getFolders('lessons/');
        console.log(folders)
        var tasks = folders.map(function(folder) {
          gulp.src(`lessons/${folder}/**`)
            .pipe(zip(`${folder}.zip`))
            .pipe(gulp.dest('lessons'))
        })
    });
    
    const gulp = require('gulp');
    const zip = require('gulp-zip');
    
    var fs = require('fs');
    var path = require('path');
    
    // Functions
    
    function getFolders(dir) {
        return fs.readdirSync(dir)
          .filter(function(file) {
            return fs.statSync(path.join(dir, file)).isDirectory();
          });
    }
    
    // Tasks
    
    // Zip each folder in /lessons and place the archive in the /lessons root
    gulp.task('zip-lessons', () => {
        let folders = getFolders('lessons/');
        console.log(folders)
        var tasks = folders.map(function(folder) {
          gulp.src(`lessons/${folder}/**`)
            .pipe(zip(`${folder}.zip`))
            .pipe(gulp.dest('lessons'))
        })
    });