(**)  grunt-init 란?

프로젝트를 하다보면 
초기 준비 작업에 생각보다 무척 많은 시간이 소요됩니다. 
더구나 초기 작업은 자주 하는 것이 아니라 시간이 지나면 까먹습니다. 
또 자신 만의 독특한 초기 구축 방법이 있어서 
문서로 따라하기로는 한계가 있습니다. 
그래서 어떤 자신만의 환경이나 공통 적인 환경을
한방에! 처리하면 좋겠다고 생각하게 됩니다. 
이때 필요한 것이 grunt-init 입니다. 
이 grunt-init 를 잘 사용하면 
초기 환경 구축을 무척 쉽게 구축할 수 있습니다. 
초기 개발 환경 구축을 하는 것을 보통 
Scaffolding 이라고 합니다. 
이번 강좌는 이 grunt-init 라는 것을 다루게 될 겁니다. 
(**)   grunt-init 설치 

이 grunt-init 는 일반 명령으로 동작되어야 하므로 
다음과 같이 전역으로 설치합니다. 
$ npm install -g grunt-init
(**)   grunt-init 버전 보기 

다음과 같은 명령으로 grunt-init 와 관련된 버전을 볼 수 있습니다. 

$ grunt-init  --version
grunt-init v0.3.2
grunt v0.4.5

제 시스템에 설치된 버전은 
grunt-init 가 0.3.2 이고 
grunt 는 0.4.5 이네요..
(**)  grunt-init 도움말 보기 
다음과 같은 명령으로 도움말을 볼 수 있습니다. 
$ grunt-init --help
grunt-init: Generate project scaffolding from a template. (v0.3.2)

Usage
grunt-init [options] [template]

Options
--help, -h  Display this help text.
--no-color  Disable colored output.
  --debug, -d  Enable debugging mode for tasks that support it.
  --stack  Print a stack trace when exiting with a warning or fatal error.
  --force, -f  A way to force your way past warnings. Want a suggestion? Don't
use this option, fix your code.
--no-write  Disable writing files (dry run).
--verbose, -v  Verbose mode. A lot more information output.
--version, -V  Print the grunt version. Combine with --verbose for more info.

Available templates

(No templates found)

Templates that exist in the /home/frog/.grunt-init directory may be run with
"grunt-init TEMPLATE". Templates that exist in another location may be run with
"grunt-init /path/to/TEMPLATE". A template is a directory that must contain, at
the very minimum, a template.js file.

For more information, see http://gruntjs.com/project-scaffolding

(**)  grunt-init 기본 템플릿 위치

grunt-init 는 명령만 존재하고 템플릿들이 없습니다. 
그냥 명령일 뿐이죠..
그래서 grunt-init 만 설치해서는 할 수 있는 것이 아무것도 없습니다. 
그래서 초기화 과정에 참조되는 템플릿들은 각자 따로 만들거나 
남들이 만들어 놓은 것을 사용해야 합니다. 
이렇게 만든 템플릿들은 grunt-init 가 참조하기 위해서는 
리눅스에서는 다음 디렉토리 하부에 있어야 합니다. 
~/.grunt-init/
즉 사용자 홈 계정에 .grunt-init 란 디렉토리 밑에 
필요로 하는 템플릿 관련 디렉토리가 있어야 합니다. 
(**)  공식 지원 템플릿

grunt 에서 공식적으로 지원하고 있는 템플릿은 
다음 URL 로 찾아 볼수 있습니다. 
https://github.com/gruntjs?query=grunt-init
여기서 볼수 있는 목록을 정리하면 현재 다음과 같습니다 .
grunt-init-gruntfile
grunt-init-commonjs
grunt-init-jquery
grunt-init-gruntplugin
grunt-init-node
grunt-init-gruntfile-sample
grunt-init-gruntplugin-sample
grunt-init-node-sample
grunt-init-commonjs-sample
grunt-init-jquery-sample

이렇게 제공된 템플릿을 쓰고 싶다면 우선 다운로드 해서 설치 해야 합니다. 

grunt-init-gruntplugin 를 쓰고 싶다면 
다음과 같이 다운로드 해서 설치 합니다. 
먼저 .grunt-init 가 홈 계정에 없다면 다음과 같이 만듭니다 .
$ cd ~
$ mkdir .grunt-init
이후 git 명령을 통하여 다음과 같이 설치 합니다. 

$ git clone https://github.com/gruntjs/grunt-init-gruntplugin.git ~/.grunt-init/gruntplugin
(**)  gruntplugin 템플릿 사용해 보기
자 이제 grunt-init 을 이용해서 gruntplugin 을 하나 만들어 봅시다. 
먼저 템플릿을 만들 디렉토리를 하나 만듭니다. 
$ cd ~/grunt/init/
$ mkdir init_temple
$ cd init_temple
이제 템플릿을 적용해 봅니다. 
$ grunt-init gruntplugin
뭐라 마구 묻는데 신경쓰지 말고 엔터만 누릅니다. 

여기서는 단지 시험해 보고 싶은 거니까요..
그러면 최종적으로 다음과 같은 내용이 생길 겁니다. 
$ pwd
/home/frog/grunt/init/init_temple
$ ls -al
합계 40
drwxrwxr-x 4 frog frog 4096  9월 10 21:13 .
drwxrwxrwx 3 frog frog 4096  9월 10 21:12 ..
-rw-rw-r-- 1 frog frog   31  9월 10 21:13 .gitignore
-rw-rw-r-- 1 frog frog  191  9월 10 21:13 .jshintrc
-rw-rw-r-- 1 frog frog 1625  9월 10 21:13 Gruntfile.js
-rw-rw-r-- 1 frog frog 1044  9월 10 21:13 LICENSE-MIT
-rw-rw-r-- 1 frog frog 2430  9월 10 21:13 README.md
-rw-rw-r-- 1 frog frog  810  9월 10 21:13 package.json
drwxrwxr-x 2 frog frog 4096  9월 10 21:13 tasks
drwxrwxr-x 4 frog frog 4096  9월 10 21:13 test
이렇게 자동적으로 필요한 것들을 만들어 주게 됩니다. 
이제 자신만의 템플릿을 어떻게 만드는지는 다음 강좌에서 봅시다.