(**)  load-grunt-tasks 란?

Grunt 를 사용하는 사람들은 무척 게으르다는 것을 느낍니다.
오늘 소개할 load-grunt-tasks 는 이 게으름의 극치를 느끼게 해 줍니다.
Gruntfile.js 파일을 작성할 때..
grunt.loadNpmTasks();
를 종종 볼수 있을 것입니다.

이 함수는 Grunt 에서 사용하는 플러그인들을 로드하는 함수인데..
이게 의존 관계가 있고 하나라도 빼먹으면..
당연히 grunt 명령이 동작하지 않습니다.
뭐..
귀찮겠지만..
이것도 귀찮아서 만든 것이 바로 
load-grunt-tasks 플러그인 입니다. 
뭐 쓰는 방법도 심플합니다.
require('load-grunt-tasks')(grunt);
한줄이면 됩니다.
이 모듈은  package.json 을 분석해서 
필요로 하는 플러그인을 자동으로 로드해 줍니다. 

이걸 쓰면 앞으로 grunt.loadNpmTasks(); 는 안녕 이겠죠? ^^
자 이걸 어떻게 사용해야 할까요?
(**)  load-grunt-tasks 플러그인 설치 

이 플러그인은 다음에서 관리되고 있습니다. 
https://github.com/sindresorhus/load-grunt-tasks

지금까지 해 왔던 대로 이렇게 하면 됩니다.
$ npm install --save-dev load-grunt-tasks
(**)  Gruntfile.js 수정 

자 이전에 사용했던 Gruntfile.js 을 다음과 같이 수정해 봅시다. 
--[Gruntfile.js]--------------------------------------------------------------------------
var path = require('path');

module.exports = function(grunt) {

require('load-grunt-tasks')(grunt);
grunt.initConfig  ({
express: {
server : {
options: {
script: path.resolve(__dirname, './test_server/bin/grunt_www.js'),
port: 3020,
},
},
},
watch: {
express: {
 files:   [ path.resolve(__dirname, './Gruntfile.js'),
path.resolve(__dirname, './test_server/bin/grunt_www.js'),
path.resolve(__dirname, './test_server/*.js'),
],
 tasks:  [ 'express:server' ],
 options: { spawn: false , },
},
livereload: {
 files:   [ path.resolve(__dirname, './test_server/views/*.jade'),
],
 options: { livereload: true, },
}
 }
});
grunt.registerTask('default', ['express:server', 'watch']);
};


----------------------------------------------------------------------------------------

달라진 부분은 
require('load-grunt-tasks')(grunt);
을 추가한 것이고 이전에 있던

grunt.loadNpmTasks('grunt-express-server');
grunt.loadNpmTasks('grunt-contrib-watch');
이 없어졌습니다. 

이제 플러그인은 설치만 하면 됩니다. ^^