【问题标题】:Merge files only if they go deeper than two levels仅当文件超过两个级别时才合并文件
【发布时间】:2016-11-24 12:07:33
【问题描述】:

我有这个文件结构:

    • 文件夹 1

      • 子文件夹 1.1
        • 子文件夹1.1.1
          • file_1.1.1.1.js
          • file_1.1.1.2.js
        • file_1.1.1.js
        • file_1.1.2.js
      • 子文件夹1.2
    • 文件夹 2

    • 文件夹 3

我正在尝试完成以下 gulp 任务,该任务将获取根目录,在本例中为 Root 文件夹,并生成以下结构:

    • 文件夹 1

      • 子文件夹 1.1
        • 子文件夹1.1.1.min.js
        • file_1.1.1.min.js
        • file_1.1.2.min.js
      • 子文件夹1.2
    • 文件夹 2

    • 文件夹 3

如您所见,直接位于第二级的文件,例如Subfolder1.1,只是缩小了。所有超过两级的文件将被连接起来,并以包含它们的二级文件夹命名。

这是否可以在 gulp 中完成,如果可以,有人可以告诉我如何做到这一点吗?

【问题讨论】:

    标签: gulp


    【解决方案1】:

    也许这可以帮助您run some tasks by folder。 或者您可以在 building such a thing yourself by iterating over directories 上找到帮助。

    【讨论】:

    • 在我的情况下文件结构是动态的,它不是固定的,可以改变。我无法为每个文件夹添加任务
    【解决方案2】:

    好的,我做到了,代码如下:

    gulp.task('task',
    function() {
        // The input root dir
        var root = 'root_in';
    
        // The output root dir
        var rootOut = 'root_out'
    
        // first get all the folders in the in the root directory
        var folders = fs.readdirSync(root)
            .filter(function(file) {
                return fs.statSync(path.join(root, file)).isDirectory();
            });
    
        return folders.map(function(folder) {
            // get the files inside each folder
            var files = fs.readdirSync(path.join(root, folder));
            files.map(function(file) {
    
                // in case it is a directory, concat all the files 
                if (fs.statSync(path.join(root, folder, file)).isDirectory()) {
                    return gulp.src(path.join(root, folder, file, '/**/*.js'))
                        .pipe(uglify())
                        .pipe(gulp_concat(file + '.js'))
                        .pipe(gulp.dest(path.join(root, folder)))
                }
                // if it is a regular file, just uglify it and output
                else {
                    return gulp.src(path.join(root, folder, file))
                        .pipe(uglify())
                        .pipe(gulp.dest(path.join(rootOut, folder)));
                }
            });
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-12
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 2013-08-24
      • 2017-01-29
      • 1970-01-01
      • 2012-10-05
      相关资源
      最近更新 更多