2013-09-25 86 views
2

我按照grunt.option頁面上的說明爲我的Gruntfile中的不同環境/目標創建了不同的配置,例如開發,暫存和生產。但是,這樣做後,我發現我的任務默默地失敗了。我在做什麼Gruntjs目標錯誤?

我已經將問題簡化爲一個非常簡單的例子。下面Gruntfile構建失敗文件:

module.exports = function (grunt) { 
    grunt.initConfig({ 
    pkg: grunt.file.readJSON('package.json'), 
    less: { 
     dev: { 
     options: { 
      compress: true 
     }, 
     build: { 
      src: ['src/css/test.less'], 
      dest: 'build/css/test.css' 
     } 
     } 
    } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-less'); 
    grunt.registerTask('default', ['less:dev']); 
}; 

在我的終端輸出如下:

$ grunt 
Running "less:dev" (less) task 

Done, without errors. 

但是,如果我用下面的Gruntfile,不出所料生成輸出:

module.exports = function (grunt) { 
    grunt.initConfig({ 
    pkg: grunt.file.readJSON('package.json'), 
    less: { 
     options: { 
     compress: true 
     }, 
     build: { 
     src: ['src/css/test.less'], 
     dest: 'build/css/test.css' 
     } 
    } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-less'); 
    grunt.registerTask('default', ['less']); 
}; 

此Gruntfile的終端輸出反映內置文件:

$ grunt 
Running "less:build" (less) task 
File build/css/test.css created. 

Done, without errors. 

我在第一個Gruntfile中做錯了什麼?我錯過了這個task:target約定是什麼?

回答

6

您的第一個Gruntfile - 如果您需要每個目標選項,則需要指定files對象。所以,你的代碼將是這樣的:

less: { 
    dev: { 
    files: { 
     "build/css/test.css": "src/css/test.less" 
    } 
    }, 
    production: { 
    options: { 
     compress: true 
    }, 
    files: { 
     "build/css/test.css": "src/css/test.less" 
    } 
    }, 
} 

基本上在第一Gruntfile build是一個不明物體。您的目標名稱爲dev,而grunt-contrib-less沒有名爲build的選項,所以Grunt不知道在哪裏寫文件。您的第二個Gruntfile可以工作,因爲您將選項設置爲全局。如果您需要每個目標選項,請使用上述代碼。

+0

非常好,非常感謝你的簡明解釋! :) – Josh

+1

你非常歡迎。 :) – Ben

+0

謝謝你本,我也是帶着這個問題來到這裏的。很煩惱,非常感謝。 – Kurtosis