이제, task 별 환경설정을 정의할 수 있다. task를 위한 환경설정 객체는 전체 환경설정 객체에서 task 명과 동일한 이름의 프로퍼티로 존재한다. 즉, “concat” task는 환경설정 객체의 “concat” 프로퍼티에 있다. 다음은 “concat”을 위한 task 환경설정 객체의 예제다.
123456789101112
concat:{options:{// 합친 결과 파일에서 각 파일을 구분할 문자열을 정의한다. separator:';'},dist:{// 합칠 파일들.src:['src/**/*.js'],// 결과 js 파일의 위치dest:'dist/<%= pkg.name %>.js'}}
package.json의 name 프로퍼티를 어떻게 참조했는지 보이는가? 우리는 package.json을 불러온 결과가 들어있는 pkg 프로퍼티를 통해서 pkg.name로 접근했다. 이 값은 이미 자바스크립트 객체로 파싱되어있다. Grunt는 환경설정 객체의 프로퍼티 값을 뱉어내는 탬플릿 엔진을 가지고 있다. 여기서는 src/ 폴더에서 확장자가 .js인 파일 전부를 합치는 concat task를 설정했다.
이번에는 자바스크립트를 minify(공백을 제거하고 변수명을 짧은 이름으로 바꾸는 작업)하는 uglify 플러그인을 설정해보자.
1234567891011
uglify:{options:{// 결과 파일 상단에 주석을 넣는다. banner:'/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'},dist:{files:{'dist/<%= pkg.name %>.min.js':['<%= concat.dist.dest %>']}}}
이제 uglify task는 minify한 자바스크립트 파일을 dist/에 생성한다. 여기서는 concat task에서 생성한 파일을 사용해서 minify를 진행하기 위해서 <%= concat.dis.dest %>를 사용했다.
QUnit 플러그인은 설정이 정말 간단한다. 그냥 QUnit을 실행하는 HTML 실행 파일(test runner)이 있는 위치만 지정하면 된다.
123
qunit:{files:['test/**/*.html']},
JSHint 플러그인도 정말 간단한다.
12345678910111213
jshint:{// 검사를 실행할 파일을 지정한다. files:['gruntfile.js','src/**/*.js','test/**/*.js'],// JSHint 환경설정 (http://www.jshint.com/docs/ 참고)options:{// 바꾸고 싶은 JSHint 기본값을 여기 지정한다. globals:{jQuery:true,console:true,module:true}}}
JSHint도 파일 목록이 담긴 배열과 옵션 객체만 설정하면 된다. JSHint에 대한 정보는 사이트를 참고한다. JSHint를 기본값으로 잘 써왔다면, Gruntfile에서 재정의 할 필요없다.