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

时间:2015-12-11 17:49:12

标签: sass gruntjs

我正在开展一个多网站项目,其中所有网站都拥有相同的结构:

setUp

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

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

可以这样写吗?

    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',
            }
        }
    }

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

1 个答案:

答案 0 :(得分:1)

几个小时之后我找到了一个有效的解决方案,在我添加的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!