close
本來要寫篇 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);
就可以讓我們輕鬆取出 各種 相依套件的名稱了。
全站熱搜