close

2014-02-28 08:50:32 +00001

本來要寫篇 yeoman 使用心得,
不過在準備材料的過程發現,
為什麼有些人的 GruntJS 設定檔,
完全沒有發現落落長的 loadNpmTasks:

grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-concurrent');

所以看了一下他們是怎麼載入的,
發現有兩種方法可以幫助我們實現。

第一種較為簡單就是使用  npm package: load-grunt-tasks 

npm install load-grunt-tasks --save-dev

接著在 Gruntfile.js 將所有的 loadNpmTask 刪除,
並加上以下語法即可。

require('load-grunt-tasks')(grunt);

第二種方法是利用另外一個 npm package: matchdep

npm install matchdep --save-dev

接著一樣在 Gruntfile.js 將所有 loadNpmTask 與 require('load-grunt-tasks')(grunt); 都刪除,
並加上以下語法即可。

require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); 

老實說,使用 load-grunt-tasks 比較省事,不過 matchdep 其實也蠻有趣的。
因為 matchdep 並不是直接和 grunt 綁定在一起, 
所以如果我們只是想抓取 package.json內套件的清單,
matchdep 可以做更多變化,例如:

var matchdep = require('matchdep'),
    printIt = function (name) {
        console.log(name);
    };

    console.log('devDependencies:');
    matchdep.filterDev('grunt-*').forEach(printIt);
    console.log('dependencies:');
    matchdep.filter('m*').forEach(printIt);
    console.log('All Dependencies:');
    matchdep.filterAll('*').forEach(printIt);

就可以讓我們輕鬆取出 各種 相依套件的名稱了。

arrow
arrow
    全站熱搜

    賽拉維‧柯南 發表在 痞客邦 留言(0) 人氣()