grunt-sass 多个 src/dest 在同一结构上

grunt-sass multiple src/dest on same structure

我正在从事一个多网站项目,其中所有网站共享相同的结构:

-sites
  -site1
    -css
      -scss
  -site2
    -css
      -scss

在我的 gruntfile.js 中,我的 sass 任务是这样写的:

    sass: {
        options: {
            sourceMap: true,
            outputStyle: 'compressed'
        },
        pippo: {
            files: {
                'sites/site1/css/main.css': 'sites/site1/css/sass/main.scss',
                'sites/site2/css/main.css': 'sites/site2/css/sass/main.scss',
            }
        }
    }

这样写可以吗?

        sass: {
        options: {
            sourceMap: true,
            outputStyle: 'compressed'
        },
        pippo: {
            files: {
                'sites/**/css/main.css': 'sites/**/css/sass/main.scss'
            }
        }
    }

我测试了它,当我构建它时它正在添加一个新的 ** 文件夹...有什么建议吗?

几个小时后,我找到了一个可行的解决方案,在我添加的 grunt 文件的最顶部:

module.exports = function(grunt) {
    var fs = require('fs');
    console.log("Inside the gruntfile");

    //create dynamic list of scss file paths
    var objDestSource = {
        'public/css/main.css': 'public/css/sass/main.scss'
    };
    fs.readdirSync('sites').forEach(function(folder){
        objDestSource['sites/'+folder+'/css/main.css'] = 'sites/'+folder+'/css/sass/main.scss';
    });
    console.log(objDestSource);
    // end scss function

在 grunt sass 任务中我刚刚更改为:

sass: {
        options: {
            sourceMap: true,
            outputStyle: 'compressed'
        },
        taskName: {
            files: objDestSource
        }
    }

和监视任务:

watch: {
   sass: {
       files: [
           'public/css/sass/**/*.scss',
           'sites/**/css/sass/**/*.scss'
       ],
       tasks: ['sass'],
       options: {
           spawn: false
       }
   }
}

这样我就可以添加一个新的子网站,而不必每次都编辑 gruntfile!