2013-09-30 19 views
0

我很新的GruntJS上運行。我正在用Jade,Sass和Grunt配置一個簡單的開發環境。如何爲每個已編譯的jade文件提供不同的data.json?

目的是生成不同類型的模板解析給定的JSON。我現在的配置是這樣的:

jade: { 
     html: { 
       options: { 
        client: false, 
        pretty: true, 
        data: grunt.file.readJSON("src/data.json") 
       }, 
       src: 'src/index.jade', 
       dest: 'build/index.html' 

     } 
} 

而且我希望這樣的事情:

jade: { 
     html: { 
       files: [ 
        { 
         options: { 
          client: false, 
          pretty: true, 
          data: grunt.file.readJSON("src/A/data.json") 
         }, 
         src: 'src/A/index.jade', 
         dest: 'build/A/index.html' 
        }, 
        { 
         options: { 
          client: false, 
          pretty: true, 
          data: grunt.file.readJSON("src/B/data.json") 
         }, 
         src: 'src/B/index.jade', 
         dest: 'build/B/index.html' 
        }, 
        { 
         options: { 
          client: false, 
          pretty: true, 
          data: grunt.file.readJSON("src/C/data.json") 
         }, 
         src: 'src/C/index.jade', 
         dest: 'build/C/index.html' 
        } 
       ] 
     } 

}

是否有這種情況的解決方案?

預先感謝您!

回答

2

在咕嚕,你可以設置每個目標或每個任務選擇:

jade: { 
    options: { /* task level options */ }, 
    htmlA: { // <- this is a target name 
    options: { 
     // target level options override the task level 
     client: false, 
     pretty: true, 
     data: grunt.file.readJSON("src/A/data.json") 
    }, 
    src: 'src/A/index.jade', 
    dest: 'build/A/index.html' 
    }, 
    htmlB: { 
    options: { 
     client: false, 
     pretty: true, 
     data: grunt.file.readJSON("src/B/data.json") 
    }, 
    src: 'src/B/index.jade', 
    dest: 'build/B/index.html' 
    }, 
} 

雖然在咕嚕-的contrib - 玉data選項接受功能以及因此它可能會更好做更多的編程方式:

jade: { 
    html: { 
    options: { 
     client: false, 
     pretty: true, 
     data: function(dest, src) { 
     var path = require('path'); 
     // Resolve data.json in the first src folder 
     return grunt.file.readJSON(path.resolve(path.dirname(src[0]), 'data.json')); 
     } 
    }, 
    files: (function() { 
     var files = {}; 
     // Build A-Z files 
     for (var i = 65; i <= 90; i++) { 
     var chr = String.fromCharCode(i); 
     files['build/' + chr + '/index.html'] = 'src/' + chr + '/index.jade'; 
     } 
     return files; 
    }()) 
    } 
} 
+0

謝謝凱爾! – pijoan

相關問題