SlideShare une entreprise Scribd logo
1  sur  17
Grunt 란?
사전적의미
1. Grunt 란?
자바스크립트 프로젝트를 위한 task 기반의 커맨드 라인 빌드 툴
1. Grunt 란?
1)
task란 사용자가 정의한 모든 단위의 작업을 뜻함2)
js 파일들 합치기, js 파일 압축하기, css 파일 압축하기,
이미지 최적화 시키기 등
ex)
포토샵의 action으로 생각하면 됩니다. 포토샵에서 반복작업(크기
변경->자르기->저장)등을 action에 지정하고 자동화 시키는 것과
같습니다.
3)
Grunt를 왜 사용하는가?
Grunt의 사용 목적은 자동화를 위해서 입니다.
우리가 해야할 반복 작업을 줄여줍니다.
2. Grunt를 왜 사용하는가?
minification, compilation, unit testing, linting 등의 작업이 여기에
속합니다.
일단 설정을 하고 나면, Task Runner가 우리들의 작업을 대신 해줍니다.
Grunt 사용방법
1) nodeJS 설치
3. Grunt 사용방법
http://nodejs.org
2) Grunt CLI(Commend Line Interface) 설치
3. Grunt 사용방법
설치는 npm(Node Packaged Modules)을 통해서 할 수 있습니다. 다음과 같은
명령어를 입력합니다. 여기서 –g는 글로벌을 뜻하며 grunt-cli를 콘솔 어디서나
사용할 수 있습니다.
> npm install -g grunt-cli
3) Grunt 설치
프로젝트 폴더의 root경로에서 grunt를 설치합니다. --save-dev로 설치
를 진행하면 grunt 설치와 동시에 다음단계에서 생성할 package.json
파일과 연동시켜주며, 파일 내부의 devDependencies항목에 설치 대상
(여기서는 grunt)을 자동으로 추가해 줍니다.
> npm install grunt --save-dev
4) package.json 생성
3. Grunt 사용방법
아래의 command line 을 통해 package.json 파일이 생성됨을 확인 합니다. 과
정중에 특별히 기재할 사항이 없다면 계속 enter를 쳐서 넘겨도 무방합니다. (자
동적으로 해당 프로젝트의 정보를 입력해줌)
> npm init
package.json
{
"name": "grunt",
"version": "0.0.0",
"main": "index.js",
"dependencies": {
"grunt": "^0.4.5",
"grunt-contrib-concat": "^0.5.1",
"grunt-contrib-uglify": "^0.8.0"
},
"devDependencies": {
"grunt-contrib-concat": "^0.5.1“ // grunt가 최신 버전으로 설치됨을 확인
},
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"author": "",
"license": "ISC"
}
5) Gruntfile.js 생성
3. Grunt 사용방법
package.json과 같은 위치(프로젝트 폴더의 root경로)에 Gruntfile.js를 생성합
니다. 이 파일에서 task를 관리 할 수 있습니다.
module.exports = function(grunt) {
grunt.initConfig({
});
grunt.registerTask(‘default', []);
}
6) 실행
아래의 커맨드로 실행시켜 서 Done, without errors. 라는 문자열이 보이면 성
공 입니다.
> grunt
자주사용하는 플러그인
1) grunt-contrib-concat
4. 자주사용하는 플러그인
grunt-contrib-concat은 여러 파일(js, css등)을 하나로 합쳐주는 모듈입니다.
> npm install grunt-contrib-concat --save
Gruntfile.js
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.initConfig({
concat: {
dev: {
src: ['js/src/*.js'],
dest: 'js/application.js'
}
}
});
grunt.registerTask(‘dev', ['concat:dev']);
}
> grunt dev
2) Uglify
4. 자주사용하는 플러그인
grunt-contrib-uglify은 JS를 압축해주는 모듈입니다.
> npm install grunt-contrib-uglify --save-dev
Gruntfile.js
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.initConfig({
uglify:{
options: {
mangle:true, // 변수명과 함수명의 변형을 막는다
compress:{
drop_console:false // 출력문 제거
},
beautify:false, // 코드의 syntax 유지
preserveComments : false // 모든 주석 제거
}
dist: {
src:'js/applications.js',
dest:'asset/js/app.min.js'
}
}
});
grunt.registerTask('default', ['uglify:dist']);
}
3) cssmin
4. 자주사용하는 플러그인
grunt-contrib-cssmin은 css를 압축해주는 모듈입니다.
> npm install grunt-contrib-cssmin --save-dev
Gruntfile.js
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-contrib-cssmin ');
grunt.initConfig({
cssmin:{
minify: {
expand:true,
cwd:"css", // 압축할 파일이 들어있는 경로
src:['*.css'], // 압축할 파일들
dest:'asset/css', // 압축완료된 파일이 들어갈 경로
ext:'.min.css‘ // 압축완료된 파일의 확장자
}
}
});
grunt.registerTask('default', [‘cssmin']);
}
그 외의 플러그인
5. 그 외의 플러그인
그 외에도 많이 사용하는 플러그인들은 아래와 같습니다.
http://gruntjs.com/plugins
contrib-watch : 실시간으로 코드와 브라우져를 동기화 시켜주는 모듈
contrib-clean : 필요없는 폴더와 파일을 삭제하는 모듈
contrib-sass : sass를 빌드해주는 모듈
contrib-less : less를 빌드해주는 모듈
contrib-imagemin : 이미지 최적화 모듈
contrib-jshint : 자바스크립트의 오류를 잡아주는 모듈
다른 플러그인들을 사용하고 싶다면 아래 주소에서 검색해서 필요한 플러그인을
사용하면 됩니다.

Contenu connexe

Tendances

2020년 4월 18일 개발 이야기 정리
2020년 4월 18일 개발 이야기 정리2020년 4월 18일 개발 이야기 정리
2020년 4월 18일 개발 이야기 정리Jay Park
 
PyCon 2017 예제로 살펴보는 PyQt
PyCon 2017 예제로 살펴보는 PyQtPyCon 2017 예제로 살펴보는 PyQt
PyCon 2017 예제로 살펴보는 PyQt덕규 임
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows TerminalOnGameServer
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)MinGeun Park
 
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)SangHoon Han
 
Blazor와 안면 트기!
Blazor와 안면 트기!Blazor와 안면 트기!
Blazor와 안면 트기!SangHoon Han
 
2020년 10월 17일 개발자 이야기
2020년 10월 17일 개발자 이야기2020년 10월 17일 개발자 이야기
2020년 10월 17일 개발자 이야기Jay Park
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
[설치의 정석] EC2에서 Java-Apache-Tomcat 설치하기
[설치의 정석] EC2에서 Java-Apache-Tomcat 설치하기[설치의 정석] EC2에서 Java-Apache-Tomcat 설치하기
[설치의 정석] EC2에서 Java-Apache-Tomcat 설치하기Jay Park
 
실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기Haze Lee
 
[설치의 정석] EC2에서 워드프레스 설치하기
[설치의 정석] EC2에서 워드프레스 설치하기[설치의 정석] EC2에서 워드프레스 설치하기
[설치의 정석] EC2에서 워드프레스 설치하기Jay Park
 
Jenkins with Unity3d & Android
Jenkins with Unity3d & Android Jenkins with Unity3d & Android
Jenkins with Unity3d & Android 종국 임
 
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정양재동 코드랩
 
NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기Hyunsuk Ahn
 
Cura localization and packaging on Win32
Cura localization and packaging on Win32Cura localization and packaging on Win32
Cura localization and packaging on Win32Jinbuhm Kim
 
응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angularredribbon1307
 
Cura Packaging on Win32
Cura Packaging on Win32Cura Packaging on Win32
Cura Packaging on Win32Jinbuhm Kim
 

Tendances (20)

2020년 4월 18일 개발 이야기 정리
2020년 4월 18일 개발 이야기 정리2020년 4월 18일 개발 이야기 정리
2020년 4월 18일 개발 이야기 정리
 
Goorm소개
Goorm소개Goorm소개
Goorm소개
 
PyCon 2017 예제로 살펴보는 PyQt
PyCon 2017 예제로 살펴보는 PyQtPyCon 2017 예제로 살펴보는 PyQt
PyCon 2017 예제로 살펴보는 PyQt
 
Cooking jquery
Cooking jqueryCooking jquery
Cooking jquery
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
 
JS Game Engines
JS Game EnginesJS Game Engines
JS Game Engines
 
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
[140315 박민근] 젠킨스를 이용한 자동빌드 시스템 구축하기(ci)
 
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)
ASP.NET Core 3.0과 Blazor를 활용한 새로운 WEB 개발(그리고 Try.NET)
 
Blazor와 안면 트기!
Blazor와 안면 트기!Blazor와 안면 트기!
Blazor와 안면 트기!
 
2020년 10월 17일 개발자 이야기
2020년 10월 17일 개발자 이야기2020년 10월 17일 개발자 이야기
2020년 10월 17일 개발자 이야기
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
[설치의 정석] EC2에서 Java-Apache-Tomcat 설치하기
[설치의 정석] EC2에서 Java-Apache-Tomcat 설치하기[설치의 정석] EC2에서 Java-Apache-Tomcat 설치하기
[설치의 정석] EC2에서 Java-Apache-Tomcat 설치하기
 
실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기실시간으로 안드로이드 프론트엔드 작업하기
실시간으로 안드로이드 프론트엔드 작업하기
 
[설치의 정석] EC2에서 워드프레스 설치하기
[설치의 정석] EC2에서 워드프레스 설치하기[설치의 정석] EC2에서 워드프레스 설치하기
[설치의 정석] EC2에서 워드프레스 설치하기
 
Jenkins with Unity3d & Android
Jenkins with Unity3d & Android Jenkins with Unity3d & Android
Jenkins with Unity3d & Android
 
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
[W3C HTML5 2017] Docker & DevOps에서 Serverless & NoOps로의 여정
 
NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기NDC 2015 삼시세끼 빌드만들기
NDC 2015 삼시세끼 빌드만들기
 
Cura localization and packaging on Win32
Cura localization and packaging on Win32Cura localization and packaging on Win32
Cura localization and packaging on Win32
 
응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular
 
Cura Packaging on Win32
Cura Packaging on Win32Cura Packaging on Win32
Cura Packaging on Win32
 

En vedette

Javascript cheat-sheet-v1
Javascript cheat-sheet-v1Javascript cheat-sheet-v1
Javascript cheat-sheet-v1hccit
 
JavaScript global object, execution contexts & closures
JavaScript global object, execution contexts & closuresJavaScript global object, execution contexts & closures
JavaScript global object, execution contexts & closuresHDR1001
 
Object Oriented Programming in JavaScript
Object Oriented Programming in JavaScriptObject Oriented Programming in JavaScript
Object Oriented Programming in JavaScriptzand3rs
 
Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScriptDonald Sipe
 
JavaScript Object Oriented Programming Cheat Sheet
JavaScript Object Oriented Programming Cheat SheetJavaScript Object Oriented Programming Cheat Sheet
JavaScript Object Oriented Programming Cheat SheetHDR1001
 
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
[DevOn 2013] Backbone.js로 능동적  M-V 디자인 구현하기[DevOn 2013] Backbone.js로 능동적  M-V 디자인 구현하기
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기Gyutae Jo
 
Beginning Object-Oriented JavaScript
Beginning Object-Oriented JavaScriptBeginning Object-Oriented JavaScript
Beginning Object-Oriented JavaScriptStoyan Stefanov
 

En vedette (7)

Javascript cheat-sheet-v1
Javascript cheat-sheet-v1Javascript cheat-sheet-v1
Javascript cheat-sheet-v1
 
JavaScript global object, execution contexts & closures
JavaScript global object, execution contexts & closuresJavaScript global object, execution contexts & closures
JavaScript global object, execution contexts & closures
 
Object Oriented Programming in JavaScript
Object Oriented Programming in JavaScriptObject Oriented Programming in JavaScript
Object Oriented Programming in JavaScript
 
Object Oriented JavaScript
Object Oriented JavaScriptObject Oriented JavaScript
Object Oriented JavaScript
 
JavaScript Object Oriented Programming Cheat Sheet
JavaScript Object Oriented Programming Cheat SheetJavaScript Object Oriented Programming Cheat Sheet
JavaScript Object Oriented Programming Cheat Sheet
 
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
[DevOn 2013] Backbone.js로 능동적  M-V 디자인 구현하기[DevOn 2013] Backbone.js로 능동적  M-V 디자인 구현하기
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
 
Beginning Object-Oriented JavaScript
Beginning Object-Oriented JavaScriptBeginning Object-Oriented JavaScript
Beginning Object-Oriented JavaScript
 

Similaire à Grunt

Grunt 사용법 간단정리
Grunt 사용법 간단정리Grunt 사용법 간단정리
Grunt 사용법 간단정리SuHyun Jeon
 
mago3d workshop in FOSS4G Korea 2018
mago3d workshop in FOSS4G Korea 2018mago3d workshop in FOSS4G Korea 2018
mago3d workshop in FOSS4G Korea 2018Gaia3D,Inc.
 
Introduce Yeoman
Introduce YeomanIntroduce Yeoman
Introduce Yeoman항희 이
 
Mago3 d 워크샵
Mago3 d 워크샵Mago3 d 워크샵
Mago3 d 워크샵정대 천
 
mago3D 기술 워크샵 자료(한국어)
mago3D  기술 워크샵 자료(한국어)mago3D  기술 워크샵 자료(한국어)
mago3D 기술 워크샵 자료(한국어)SANGHEE SHIN
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rdPark Jonggun
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발지수 윤
 
Windows에서 go+eclipse 개발환경 구축
Windows에서 go+eclipse 개발환경 구축Windows에서 go+eclipse 개발환경 구축
Windows에서 go+eclipse 개발환경 구축Jaehoon Kim
 
Backend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build toolsBackend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build toolsKyunghun Jeon
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기JinKwon Lee
 
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java ProjectJi-Woong Choi
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정leejungwang
 
Html5+js with game engine cocos2d-html5 분석 @KGC2012
Html5+js with game engine   cocos2d-html5 분석 @KGC2012Html5+js with game engine   cocos2d-html5 분석 @KGC2012
Html5+js with game engine cocos2d-html5 분석 @KGC2012Chanho Song
 
Bug sense 분석
Bug sense 분석Bug sense 분석
Bug sense 분석logdog
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST_NHNent
 
18.10.05 Fusion 360 with Python script
18.10.05 Fusion 360 with Python script18.10.05 Fusion 360 with Python script
18.10.05 Fusion 360 with Python scriptDaniel Kim
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용Jin wook
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안Jeongsang Baek
 
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415sprdd
 

Similaire à Grunt (20)

How to Grunt.js
How to Grunt.jsHow to Grunt.js
How to Grunt.js
 
Grunt 사용법 간단정리
Grunt 사용법 간단정리Grunt 사용법 간단정리
Grunt 사용법 간단정리
 
mago3d workshop in FOSS4G Korea 2018
mago3d workshop in FOSS4G Korea 2018mago3d workshop in FOSS4G Korea 2018
mago3d workshop in FOSS4G Korea 2018
 
Introduce Yeoman
Introduce YeomanIntroduce Yeoman
Introduce Yeoman
 
Mago3 d 워크샵
Mago3 d 워크샵Mago3 d 워크샵
Mago3 d 워크샵
 
mago3D 기술 워크샵 자료(한국어)
mago3D  기술 워크샵 자료(한국어)mago3D  기술 워크샵 자료(한국어)
mago3D 기술 워크샵 자료(한국어)
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발
 
Windows에서 go+eclipse 개발환경 구축
Windows에서 go+eclipse 개발환경 구축Windows에서 go+eclipse 개발환경 구축
Windows에서 go+eclipse 개발환경 구축
 
Backend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build toolsBackend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build tools
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
[오픈소스컨설팅]Gradle Basic - How to use Gradle in Java Project
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정
 
Html5+js with game engine cocos2d-html5 분석 @KGC2012
Html5+js with game engine   cocos2d-html5 분석 @KGC2012Html5+js with game engine   cocos2d-html5 분석 @KGC2012
Html5+js with game engine cocos2d-html5 분석 @KGC2012
 
Bug sense 분석
Bug sense 분석Bug sense 분석
Bug sense 분석
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
18.10.05 Fusion 360 with Python script
18.10.05 Fusion 360 with Python script18.10.05 Fusion 360 with Python script
18.10.05 Fusion 360 with Python script
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
Zinst 패키지 기반의-리눅스_중앙관리시스템_20140415
 

Grunt

  • 1.
  • 4. 자바스크립트 프로젝트를 위한 task 기반의 커맨드 라인 빌드 툴 1. Grunt 란? 1) task란 사용자가 정의한 모든 단위의 작업을 뜻함2) js 파일들 합치기, js 파일 압축하기, css 파일 압축하기, 이미지 최적화 시키기 등 ex) 포토샵의 action으로 생각하면 됩니다. 포토샵에서 반복작업(크기 변경->자르기->저장)등을 action에 지정하고 자동화 시키는 것과 같습니다. 3)
  • 6. Grunt의 사용 목적은 자동화를 위해서 입니다. 우리가 해야할 반복 작업을 줄여줍니다. 2. Grunt를 왜 사용하는가? minification, compilation, unit testing, linting 등의 작업이 여기에 속합니다. 일단 설정을 하고 나면, Task Runner가 우리들의 작업을 대신 해줍니다.
  • 8. 1) nodeJS 설치 3. Grunt 사용방법 http://nodejs.org
  • 9. 2) Grunt CLI(Commend Line Interface) 설치 3. Grunt 사용방법 설치는 npm(Node Packaged Modules)을 통해서 할 수 있습니다. 다음과 같은 명령어를 입력합니다. 여기서 –g는 글로벌을 뜻하며 grunt-cli를 콘솔 어디서나 사용할 수 있습니다. > npm install -g grunt-cli 3) Grunt 설치 프로젝트 폴더의 root경로에서 grunt를 설치합니다. --save-dev로 설치 를 진행하면 grunt 설치와 동시에 다음단계에서 생성할 package.json 파일과 연동시켜주며, 파일 내부의 devDependencies항목에 설치 대상 (여기서는 grunt)을 자동으로 추가해 줍니다. > npm install grunt --save-dev
  • 10. 4) package.json 생성 3. Grunt 사용방법 아래의 command line 을 통해 package.json 파일이 생성됨을 확인 합니다. 과 정중에 특별히 기재할 사항이 없다면 계속 enter를 쳐서 넘겨도 무방합니다. (자 동적으로 해당 프로젝트의 정보를 입력해줌) > npm init package.json { "name": "grunt", "version": "0.0.0", "main": "index.js", "dependencies": { "grunt": "^0.4.5", "grunt-contrib-concat": "^0.5.1", "grunt-contrib-uglify": "^0.8.0" }, "devDependencies": { "grunt-contrib-concat": "^0.5.1“ // grunt가 최신 버전으로 설치됨을 확인 }, "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "author": "", "license": "ISC" }
  • 11. 5) Gruntfile.js 생성 3. Grunt 사용방법 package.json과 같은 위치(프로젝트 폴더의 root경로)에 Gruntfile.js를 생성합 니다. 이 파일에서 task를 관리 할 수 있습니다. module.exports = function(grunt) { grunt.initConfig({ }); grunt.registerTask(‘default', []); } 6) 실행 아래의 커맨드로 실행시켜 서 Done, without errors. 라는 문자열이 보이면 성 공 입니다. > grunt
  • 13. 1) grunt-contrib-concat 4. 자주사용하는 플러그인 grunt-contrib-concat은 여러 파일(js, css등)을 하나로 합쳐주는 모듈입니다. > npm install grunt-contrib-concat --save Gruntfile.js module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-concat'); grunt.initConfig({ concat: { dev: { src: ['js/src/*.js'], dest: 'js/application.js' } } }); grunt.registerTask(‘dev', ['concat:dev']); } > grunt dev
  • 14. 2) Uglify 4. 자주사용하는 플러그인 grunt-contrib-uglify은 JS를 압축해주는 모듈입니다. > npm install grunt-contrib-uglify --save-dev Gruntfile.js module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.initConfig({ uglify:{ options: { mangle:true, // 변수명과 함수명의 변형을 막는다 compress:{ drop_console:false // 출력문 제거 }, beautify:false, // 코드의 syntax 유지 preserveComments : false // 모든 주석 제거 } dist: { src:'js/applications.js', dest:'asset/js/app.min.js' } } }); grunt.registerTask('default', ['uglify:dist']); }
  • 15. 3) cssmin 4. 자주사용하는 플러그인 grunt-contrib-cssmin은 css를 압축해주는 모듈입니다. > npm install grunt-contrib-cssmin --save-dev Gruntfile.js module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-cssmin '); grunt.initConfig({ cssmin:{ minify: { expand:true, cwd:"css", // 압축할 파일이 들어있는 경로 src:['*.css'], // 압축할 파일들 dest:'asset/css', // 압축완료된 파일이 들어갈 경로 ext:'.min.css‘ // 압축완료된 파일의 확장자 } } }); grunt.registerTask('default', [‘cssmin']); }
  • 17. 5. 그 외의 플러그인 그 외에도 많이 사용하는 플러그인들은 아래와 같습니다. http://gruntjs.com/plugins contrib-watch : 실시간으로 코드와 브라우져를 동기화 시켜주는 모듈 contrib-clean : 필요없는 폴더와 파일을 삭제하는 모듈 contrib-sass : sass를 빌드해주는 모듈 contrib-less : less를 빌드해주는 모듈 contrib-imagemin : 이미지 최적화 모듈 contrib-jshint : 자바스크립트의 오류를 잡아주는 모듈 다른 플러그인들을 사용하고 싶다면 아래 주소에서 검색해서 필요한 플러그인을 사용하면 됩니다.