2017-04-06 72 views
0

我很新的呻吟,我想達到以下目標咕嚕創建並運行更少的編譯任務

  • 迭代在指示位置的每個目錄
  • 編譯更少的文件,以CSS

源:

  • 主題1
    • file.less
  • 主題2
    • file.less
  • 主題3
    • file.less

後處理:

  • 主題1
    • file.less
    • out.css
  • 主題2
    • file.less
    • out.css
  • 主題3
    • file.less
    • out.css

我讀的地方,咕嚕這樣做,這是我的整個run.js文件:

var grunt = require('grunt'), 
    less = require('less'); 

    grunt.initConfig({ 
    less: { 
     compileCore: { 
     options: { 
      strictMath: true 
     }, 
     files: [{ 
      expand: true, 
      src: ['themes/**/file.less'], 
      ext: '.css', 
      extDot: 'first' 
     }] 
     } 
    } 
    }); 

    grunt.registerTask('default', ['less']); 

    grunt.task.run('default'); 

它不給任何錯誤,但它也不工作,我怎麼能使這工作? (再次,我有呼嚕聲沒有任何先進經驗,還)

,如果可能也實現只用命令行執行這個目標(無乳寧Node.js的文件)​​,這將是一件好事;)

回答

1

你可以使用grunt.file.expandMapping(https://gruntjs.com/api/grunt.file#grunt.file.expandmapping) 來遍歷目錄中的所有文件,並根據需求提供選項。

下面的代碼將根據您的要求工作。

module.exports = function (grunt) { 
 
    grunt.initConfig({ 
 
     less: { 
 
      development: { 
 
       files: grunt.file.expandMapping(['themes/**/*.less'], '', { 
 
        rename: function (destBase, destPath) { 
 
         return destBase + destPath.replace('.less', '.css'); 
 
        } 
 
       }) 
 
      } 
 
     } 
 
    }); 
 
    grunt.loadNpmTasks('grunt-contrib-less'); 
 
    grunt.registerTask('default', ['less']); 
 
}