19. Java를 하신 분이라면, Maven의 Archetype 과 좀 비슷하다고
느끼실 겁니다.
yeoman의 공식 Generator 는 다음과 같습니다.
Web App
AngularJS
Backbone
BBB
Chrome Apps Basic Boilerplate
Ember
Jasmine
Mocha
Karma
20. 기타 커뮤니티 Generator List
아직 얼마 안되어서인지 등록된 제너레이터가 많진 않습니다.
원한다면 사용하거나 여기에 등록할 수도 있습
니다.
http://yeoman.io/community-generators.html
직접 만들어서
25. Yeoman의 Scaffolding 생성
앞서 설명드렸다시피 Yeoman 을 사용하면 웹 개발시 반드시
작성해야 하는 파일과,
프레임워크 기반, 즉 AngularJS, Backbone, Bootstrap...기타등
등을 사용하는 기본 구조의 웹 스캐폴딩을 작성해줍니다.
26. 이러한 구조를 직접 yeoman 없이 만들려면 프로그래머는
app, test, js, css, asset, view 등등의 디렉토리를 만들고
사용하려는 컴포넌트를 배포 사이트에 가서 다운로드 받고
index.html을 생성하고
다운로드 받은 컴포넌트 파일들을 페이지에 일일히 include
시켜줍니다.
또한 프리뷰 빌트인 서버가 필요하므로 서버도 셋업합니다.
프로토타입 코드 작성 및 반복코드 작성은 피하고 싶고,
코딩한 파일에 대한 검증과 테스트는 필수입니다.
이미지 최적화, 스크립트, CSS minified 작업 및 파일 합치
기...etc
43. 할일이 많다.
프로젝트 구조마다 달라지기도 합니다.
아니 그전에 Task 각각의 설정법을 파악하는 것도 큰일이네요.
module.exports=function(grunt){
grunt.initConfig({
pkg:grunt.file.readJSON("package.json"),
uglify:{...},//소스 minifyTask
changelog:{...},//체인지로깅 Task
jshint:{...},//소스 문법 검사 Task
connect:{...},//로컬서버 Task
mocha:{...}, //테스트 Task
watch:{...},//실시간 소스 감시 Task
shell:{...},//쉘 명령 Task
xxxTask //기타
yyyTask //등등
coolTask //사용자 정의 Task
...
build:{...}//배포 Task
});
};
44. Yeoman으로 Scaffolding을 생성하면
해당 Scaffolding에 맞는 기본 Gruntfile.js 을 생성해줍니다.
별도로 새 Task나, 변경이 필요한 Task가 있다면 Yeoman이 생
성해준 Gruntfile.js에 약간의 추가나 수정만 하면 되겠죠.
50. AngularJS Generator 종류
$yoangular//기본 스캐폴딩 생성
$yoangular:controlleruser//user컨트롤러 생성
$yoangular:directivemyDirective//myDirectiveDirective생성
$yoangular:filtermyFilter//myFilterfilter생성
$yoangular:routeuser//user컨트롤러,뷰,그리고 라우팅 설정 한번에 생성
$yoangular:servicemyService//myService서비스 생성
$yoangular:decoratormyDecorator//myDecorator생성
$yoangular:viewuser//userview생성
52. 정리
Yeoman을 사용하면 웹 프로젝트 개발 효율을 증가시킬 수
있고, 생성된 코드를 보며 학습 비용도 덜 수 있다
기본적인 스캐폴딩이 마음에 들지 않으면 직접 정의해서 사
용할 수도 있으며 효율적인 외부 컴포넌트 관리 및 배포 테스
트가 쉽다.
제네레이터 공유만으로 쉽게 프로젝트 환경을 공유할 수 있
다.
53. 그러나
스캐폴딩 제네레이터 정의는 귀찮고, 이미 정의된 것은 마음
에 들지 않을 수 있다.
간단하게 bower.json 과 Gruntfile.js, package.json 만 공유해
도 비슷한 효과가 나기에 굳이 Yeoman을 끼워넣어 거추장
스럽게 할 필요가 없을 수도 있다.