Gruntjs Grunt-在循环中运行任务(saas、cssmin)

Gruntjs Grunt-在循环中运行任务(saas、cssmin),gruntjs,Gruntjs,我正在尝试实现Grunt以自动化CSS合并和缩小的过程。我的文件夹结构: 文件夹1 --sass --css 文件夹2 --sass --css 文件夹3 --sass --css 文件夹4 --sass --css 要求:从eclipse文件保存时触发grunt任务时,grunt任务在每个项目上都正常运行。但是,我想要的是通过发出grunt命令来执行所有文件夹的缩小过程,即当我在cmd中键入“grunt”时,它应该在文件夹中循环,为每个文件夹生成缩小的css。目前,它正在为每个迭代中的最后一个

我正在尝试实现Grunt以自动化CSS合并和缩小的过程。我的文件夹结构:

文件夹1
--sass
--css

文件夹2
--sass
--css

文件夹3
--sass
--css

文件夹4
--sass
--css

要求:从eclipse文件保存时触发grunt任务时,grunt任务在每个项目上都正常运行。但是,我想要的是通过发出grunt命令来执行所有文件夹的缩小过程,即当我在cmd中键入“grunt”时,它应该在文件夹中循环,为每个文件夹生成缩小的css。目前,它正在为每个迭代中的最后一个文件夹生成css,因为initconfig在循环中

grunfile.js的简化版本(仅携带相关代码):

module.exports = function(grunt) {

    var tasks = [
        'grunt-contrib-cssmin','grunt-sass'
    ];

    tasks.forEach( function ( task ) {
        grunt.loadNpmTasks( task );
    });

    var folder  =['folder1', 'folder2', 'folder3', 'folder4'];

    var source;
    var csspath;
    var destination;

    for (var i = 0; i < folder.length; i ++ ) {         

            source=folder[i] + '/sass/*.scss';
            csspath=folder[i] + '/css/';
            destination=csspath + 'combined-styles.css';



            grunt.initConfig({

                config: {
                    destination: destination
                },
                sass: {
                    dist: {
                      files: {
                        '<%= config.destination %>' : [source]
                      }
                    },
                },
                cssmin: {
                   target: {
                    files: [{
                      expand: true,
                      cwd: csspath,
                      src: ['combined-styles.css'],
                      dest: csspath,
                      ext: '.min.css'
                    }]
                  }
               }

            });

        grunt.task.registerTask(folder[i], ['sass','cssmin']);
    }

    grunt.task.registerTask('default', folder);


};
module.exports=函数(grunt){
变量任务=[
“grunt contrib cssmin”,“grunt-sass”
];
tasks.forEach(函数(任务){
grunt.loadNpmTasks(任务);
});
var folder=['folder1','folder2','folder3','folder4'];
var源;
var csspath;
var目的地;
对于(var i=0;i

非常感谢您的帮助。

我已经解决了这个问题。以下是步骤:

  • 初始化的sass和cssmin数组
  • 已从更改我的sass任务配置

               files: {
                        '<%= config.destination %>' : [source]
                      }
    
  • (与cssmin类似)

  • 为每个文件夹的阵列sass和cssmin添加了值
  • 使用grunt.config.set将sass和cssmin数组分别分配给sass和cssmin任务:

    grunt.config.set(“sass”,sass)

    grunt.config.set(“cssmin”,cssmin)

  • 注册任务“sass”和“cssmin”

    grunt.task.registerTask('default',['sass','cssmin'])

  • 更正Gruntfile.js:

    module.exports = function(grunt) {
    
        var tasks = [
            'grunt-contrib-cssmin','grunt-sass'
        ];
    
        tasks.forEach( function ( task ) {
            grunt.loadNpmTasks( task );
        });
    
        var folder  =['folder1', 'folder2', 'folder3', 'folder4'];
    
        var source,csspath,scsspath;
    
        var sass={};
        var cssmin={};
    
        for (var i = 0; i < folder.length; i ++ ) {         
    
                scsspath=folder[i] + '/sass/';
                source='*.scss';
                csspath=folder[i] + '/css/';
    
                sass["folder"+i]= {
                     files: [{
                        expand: true,
                        cwd: scsspath,
                        src: [source],
                        dest: csspath,
                        ext: '.css'
                    }]
                };
    
                cssmin["folder"+i]= {
                    files: [{
                        expand: true,
                        cwd: csspath,
                        src: ['combined-styles.css'],
                        dest: csspath,
                        ext: '.min.css'
                    }]
                };
    
        }
    
        grunt.config.set("sass", sass);
        grunt.config.set("cssmin", cssmin);
    
        grunt.task.registerTask('default', ['sass','cssmin']);
    
    
    };
    
    module.exports=函数(grunt){
    变量任务=[
    “grunt contrib cssmin”,“grunt-sass”
    ];
    tasks.forEach(函数(任务){
    grunt.loadNpmTasks(任务);
    });
    var folder=['folder1','folder2','folder3','folder4'];
    var源、csspath、scsspath;
    var-sass={};
    var cssmin={};
    对于(var i=0;i
    module.exports = function(grunt) {
    
        var tasks = [
            'grunt-contrib-cssmin','grunt-sass'
        ];
    
        tasks.forEach( function ( task ) {
            grunt.loadNpmTasks( task );
        });
    
        var folder  =['folder1', 'folder2', 'folder3', 'folder4'];
    
        var source,csspath,scsspath;
    
        var sass={};
        var cssmin={};
    
        for (var i = 0; i < folder.length; i ++ ) {         
    
                scsspath=folder[i] + '/sass/';
                source='*.scss';
                csspath=folder[i] + '/css/';
    
                sass["folder"+i]= {
                     files: [{
                        expand: true,
                        cwd: scsspath,
                        src: [source],
                        dest: csspath,
                        ext: '.css'
                    }]
                };
    
                cssmin["folder"+i]= {
                    files: [{
                        expand: true,
                        cwd: csspath,
                        src: ['combined-styles.css'],
                        dest: csspath,
                        ext: '.min.css'
                    }]
                };
    
        }
    
        grunt.config.set("sass", sass);
        grunt.config.set("cssmin", cssmin);
    
        grunt.task.registerTask('default', ['sass','cssmin']);
    
    
    };