SlideShare a Scribd company logo
•를사용한로만들어진 
•계열에서는대부분의개발자들이구사하는로되어있어서분야에서강력한기능을가지고있다
• 
•로된패키지들을관리해주는툴 
•리눅스세상의파이썬세상의자바세상의같은것 
•현재디렉터리에있는파일에서의존성을확인한다
• 
•새프로젝트를만든다 
• 
•지정된모듈을설치한다 
•로실행해야설치할수있다 
•에해당디펜던시를저장한다 
• 
•모듈을삭제한다 
{ 
"name": "testproject", 
"version": "1.0.0", 
"description": "", 
"main": "index.js", 
"scripts": { 
"test": "echo "Error: no test specified" && exit 1" 
}, 
"author": "", 
"license": "ISC", 
"devDependencies": { 
"request": "^2.42.0" 
} 
} 중가장최신버전는가능은불가중가장최신버전은가능은불가정확히 
문제가발생할경우만빼고다시설치해봅니다
•커피스크립트를사용하는경우로프로젝트디렉터리의메인에위치한다 
•빌드에관한모든사항을정하는일종의배치파일이라고생각하면된다
•를적용한예제 
module.exports= function(grunt) { 
grunt.initConfig({ 
pkg: grunt.file.readJSON('package.json'), 
uglify: { 
options: { 
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */n' 
}, 
build: { 
src: 'src/<%= pkg.name %>.js', 
dest: 'build/<%= pkg.name %>.min.js' 
} 
} 
}); 
grunt.loadNpmTasks('grunt-contrib-uglify'); 
grunt.registerTask('default', ['uglify']); 
}; 설정각각의플러그인이참조요구하는정보를여기에넣어준다플러그인을사용한다는것을알려준다로설치되어있어야하며에의존성선언이되어있어야한다설정
•태스크는원하는만큼선언이가능 
• 
•를선언한이름 
•주로타겟이름으로많이사용 
•와같이다른작업을하는동일태스크들을묶어서선언하는용도로가장많이사용된다
•커스텀태스크만들기 
•별도의플러그인을만들기엔너무작은작업이지만빌드과정에서자동으로수행되었으면하는작업이있는경우에함수를줘서간단히선언할수있다 
•와동일하게수행된다 
grunt.registerTask('default', 'Hello world!', function() { 
grunt.log.write('Hi, there!').ok(); 
});
•단순히파일을복사하는데사용 
•서브디렉터리펴기필터적용등으로다양하게응용할수있음 
copy: { 
main: { 
files: [ 
// includes files within path 
{expand: true, src: ['path/*'], dest: 'dest/', filter: 'isFile'}, 
// includes files within path and its sub-directories 
{expand: true, src: ['path/**'], dest: 'dest/'}, 
// makes all srcrelative to cwd 
{expand: true, cwd: 'path/', src: ['**'], dest: 'dest/'}, 
// flattens results to a single level 
{expand: true, flatten: true, src: ['path/**'], dest: 'dest/', filter: 'isFile'} 
] 
} 
}
•여러파일을하나로합치는데사용 
concat: { 
options: { 
separator: ';' 
}, 
dist: { 
src: ['src/**/*.js'], 
dest: 'dist/<%= pkg.name %>.js' 
} 
}
•최종출력후파일을난독화하는데사용 
uglify: { 
options: { 
banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */n' 
}, 
dist: { 
files: { 
'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest%>'] 
} 
} 
},
•스타일시트를로빌드하는데사용 
less: { 
development: { 
options: { 
paths: ["assets/css"] 
}, 
files: { 
"path/to/result.css": "path/to/source.less" 
} 
}, 
production: { 
options: { 
paths: ["assets/css"], 
cleancss: true, 
modifyVars: { 
imgPath: '"http://mycdn.com/path/to/images"', 
bgColor: 'red' 
} 
}, 
files: { 
"path/to/result.css": "path/to/source.less" 
} 
} 
}
•로컬웹서버를띄운다 
•간단히빌드된결과물을테스트하고싶거나이를포함하는경우에사용할수있다 
connect: { 
server: { 
options: { 
port: 8000, 
base: '.' 
} 
} 
}
•을사용하여을수행한다 
• 
•유닛테스트프레임워크 
•상에서을포함한모든상호작용을테스트할수있다 
•와함께사용하여실제로서버에서동작하는것과동일한시나리오를테스트해볼수있다 
// Project configuration. 
grunt.initConfig({ 
qunit: { 
all: { 
options: { 
urls: [ 
'http://localhost:8000/test/foo.html', 
'http://localhost:8000/test/bar.html', 
] 
} 
} 
}, 
connect: { 
server: { 
options: { 
port: 8000, 
base: '.' 
} 
} 
} 
}); 
// This plugin provides the "connect" task. 
grunt.loadNpmTasks('grunt-contrib-connect'); 
// A convenient task alias. 
grunt.registerTask('test', ['connect', 'qunit']);
•를사용하여자바스크립트를산정한다 
•가수행되면콘솔에발생시함께출력된다 
jshint: { 
files: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'], 
options: { 
// options here to override JSHintdefaults 
globals: { 
jQuery: true, 
console: true, 
module: true, 
document: true 
} 
} 
}
에서호출하기 
•그냥실행시키세요 
task requirejs(type: Exec) { 
commandLine'grunt', 'requirejs' 
}
좋은것들 
•
Grunt

More Related Content

What's hot

진짜기초 Node.js
진짜기초 Node.js진짜기초 Node.js
진짜기초 Node.js
Woo Jin Kim
 
Python server-101
Python server-101Python server-101
Python server-101
Huey Park
 
Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1
성일 한
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
기동 이
 
[오픈소스컨설팅]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
Ji-Woong Choi
 
Kinect 사용을 위한 OpenCV, PCL 라이브러리 설치
Kinect 사용을 위한 OpenCV, PCL 라이브러리 설치Kinect 사용을 위한 OpenCV, PCL 라이브러리 설치
Kinect 사용을 위한 OpenCV, PCL 라이브러리 설치
Inyoung Oh
 
Apache module-201511
Apache module-201511Apache module-201511
Apache module-201511
Eric Ahn
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
Circulus
 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVC
Arawn Park
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화
Juwon Kim
 
지속적인 통합
지속적인 통합지속적인 통합
지속적인 통합
중선 곽
 
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js
연웅 조
 
Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3
성일 한
 
20131217 html5
20131217 html520131217 html5
20131217 html5
DK Lee
 
Laravel 로 배우는 서버사이드 #2
Laravel 로 배우는 서버사이드 #2Laravel 로 배우는 서버사이드 #2
Laravel 로 배우는 서버사이드 #2
성일 한
 
Gulp 입문
Gulp 입문 Gulp 입문
Gulp 입문
라한사 아
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer
Jae Sung Park
 
Vue js
Vue jsVue js
Vue js
HyungKuIm
 
Express 프레임워크
Express 프레임워크Express 프레임워크
Express 프레임워크
Choonghyun Yang
 

What's hot (20)

진짜기초 Node.js
진짜기초 Node.js진짜기초 Node.js
진짜기초 Node.js
 
Python server-101
Python server-101Python server-101
Python server-101
 
Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1Laravel 로 배우는 서버사이드 #1
Laravel 로 배우는 서버사이드 #1
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
[오픈소스컨설팅]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
 
Kinect 사용을 위한 OpenCV, PCL 라이브러리 설치
Kinect 사용을 위한 OpenCV, PCL 라이브러리 설치Kinect 사용을 위한 OpenCV, PCL 라이브러리 설치
Kinect 사용을 위한 OpenCV, PCL 라이브러리 설치
 
Apache module-201511
Apache module-201511Apache module-201511
Apache module-201511
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVC
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화
 
지속적인 통합
지속적인 통합지속적인 통합
지속적인 통합
 
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js
 
Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3Laravel 로 배우는 서버사이드 #3
Laravel 로 배우는 서버사이드 #3
 
20131217 html5
20131217 html520131217 html5
20131217 html5
 
Laravel 로 배우는 서버사이드 #2
Laravel 로 배우는 서버사이드 #2Laravel 로 배우는 서버사이드 #2
Laravel 로 배우는 서버사이드 #2
 
Gulp 입문
Gulp 입문 Gulp 입문
Gulp 입문
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer
 
Maven
MavenMaven
Maven
 
Vue js
Vue jsVue js
Vue js
 
Express 프레임워크
Express 프레임워크Express 프레임워크
Express 프레임워크
 

Similar to Grunt

Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
Han Jung Hyun
 
요즘웹개발
요즘웹개발요즘웹개발
요즘웹개발
Lee MyoungKyu
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발지수 윤
 
[Td 2015]asp.net 5 깊게 파고들기(박용준)
[Td 2015]asp.net 5 깊게 파고들기(박용준)[Td 2015]asp.net 5 깊게 파고들기(박용준)
[Td 2015]asp.net 5 깊게 파고들기(박용준)
Sang Don Kim
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XpressEngine
 
딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect
Junyi Song
 
Node.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdfNode.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdf
Seung kyoo Park
 
okspring3x
okspring3xokspring3x
okspring3x
Kenu, GwangNam Heo
 
Python codelab1
Python codelab1Python codelab1
Python codelab1
건희 김
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
Polymer따라잡기
Polymer따라잡기Polymer따라잡기
Polymer따라잡기
Han Jung Hyun
 
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
Kyunghun Jeon
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
현철 조
 
[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
Park Jonggun
 
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
OpenStack Korea Community
 
Hacosa jquery 1th
Hacosa jquery 1thHacosa jquery 1th
Hacosa jquery 1th
Seong Bong Ji
 
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
WSConf.
 

Similar to Grunt (20)

Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
요즘웹개발
요즘웹개발요즘웹개발
요즘웹개발
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발
 
[Td 2015]asp.net 5 깊게 파고들기(박용준)
[Td 2015]asp.net 5 깊게 파고들기(박용준)[Td 2015]asp.net 5 깊게 파고들기(박용준)
[Td 2015]asp.net 5 깊게 파고들기(박용준)
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect
 
Node.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdfNode.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdf
 
okspring3x
okspring3xokspring3x
okspring3x
 
Python codelab1
Python codelab1Python codelab1
Python codelab1
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
Polymer따라잡기
Polymer따라잡기Polymer따라잡기
Polymer따라잡기
 
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
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
[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
 
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
 
Pp3 devweb
Pp3 devwebPp3 devweb
Pp3 devweb
 
Hacosa jquery 1th
Hacosa jquery 1thHacosa jquery 1th
Hacosa jquery 1th
 
Scala for play
Scala for playScala for play
Scala for play
 
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
 

Grunt