gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

36

Transcript of gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

Page 1: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化
Page 2: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

u—s‚øtKtÑ� @_kenichirow

÷™¶&gumiô��çÃ�èÃ�Ôê¼

°ì: HTML,SCSS,CoffeeScript°ì? : ¤—•«ł›�“¦PythonEÛ? : ^ŠClojure�Oµ�−vim , git

Page 3: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

:Ÿ�¡�^Š”ô��çÃ�èØoìŽ

grunt�»

gumi�»grunt³�t∙q³›–−v

^Š”gruntRRìŽv

Page 4: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

ox¶ß�¡w^Š”ô��çÃ�èØo»fiœo

Page 5: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

)åa�qk�aweb¼ö�ÍßÓ��”�áÞawÒ—œ¶o

Backbone.js¶∙JS”MVCô�ߊ�ßË

SMACSS¶∙&|oCSSŁSÊ 

Page 6: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

ŸÜ»Ã³o—zßÎv•Ufl“¦∙�Ðs−�Ø)s¤ÞߊØo“�^‘”ÈowìáË•

Page 7: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

.o«�åÒ¾éß•Šo<�ØÏþ�è�¾�³�−¶w)s¤

ÿÕØIo

Page 8: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化
Page 9: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

Šøa|—|łq1;a�x−�»Šøa|–²žvœ�o|¡Ø›��!”©�O¶�)•ÓÂ

Page 10: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

GRUNT.JS

Page 11: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

GRUNT.JSNode.js�¢œ©¤¤ÜÕËŠøaâß�Ruby”RakeºJava”Ant�œ∼øq¶Ø”Ïþ�è�¾��$ grunt + u�\©¤ÜÕËù���

grunt.js

$ grunt sass

Page 12: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

GRUNT”ïßÔ��•fio–gumi�»2013�7j‚v”^&⁄v0.4.1 ³³i0.3Kvœ0.4K�v¶ßNòw‾›–o−”��Ÿ�ä\©–¶oö�̾�»³s¶v›¤ß|—¡�ìáçö”oÏßè»Ó²�� : grunt/grunt Upgrading from 0.3 to 0.4

Page 13: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

WHO USES GRUNT

Page 14: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

cw�x−”ÜÕËÀ°ì)³Ł1ô¹¾�Gruntfile.(js/coffee)•o–Ïþ�è���×s�sass(compass)”Ï�ð¾�“›¤œ»

#Gruntfile.coffeemodule.exports = (grunt) -> config = compass: debug: options: environment: 'development' release: options: environment: 'production' grunt.loadNpmTasks 'grunt-contrib-compass' grunt.registerTask 'compile', 'compassコンパイルをするよ (DEBUG)', [ 'compass' ]

$ grunt compass:release

Page 15: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

¶þ”§Í›«Œ¦©compass³Ÿ�•§z”�N°œ¶o... Î

Page 16: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

�²�» c”ÜÕ˳—�Ł–Ñ•��¡−Zî”ô¹¾�”Nò³{−|–Šø�ÜÕË��

#release task grunt.registerTask 'release-compile', 'sassのコンパイルをするよ (RELEASE)', [ 'checkConflict' //コンパイルするファイルに未解消のコンフリクトがないかチェック 'clean:sass' //sassの一時ファイルを削除 'compass:release' //コンパイル 'clean:css' //古いcssを削除 'lightpng' //リポジトリに追加された画像を圧縮 'copy:sass' //アプリケーションのフォルダにcssをコピー 'csso' //cssoで最適化 'resizeImage' //画像のリサイズ 'cssImage1x' //android用のcss生成 'growl:sass' //おわったらgrowlで通知 ]

$ grunt release-compile

Page 17: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

¶þ”§Í ƒ©H”»Ã�Ø�Ø›�»s�shell�Øoooµ∼Œ... Î

Page 18: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

�|z\o

2013�•ÓÂ�ÕË�öçx¤z¶o

N¶DSLx¤z¶o

XML»<7”z'∼Œ¶o

Page 19: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

GRUNTooø�©5|µ“JS�ÜÕËŠøa!ö�̾�n� Vz1000ıöcoffee+Ô�!©”lodash�9c;»Ã›z�Õç�¢�x−!ô¹¾�Nò³ç�Èß•|–�²”ÜÕ˳|¡”w–Øq�©¶o

Page 20: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

GUMI�”GRUNT

Page 21: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

qxz)¦–

coffee/scss”Ï�ð¾�iÜÕËöl•ô^¡−pł�|¤ÜÕË

•)v©−

×s�ß∙Øu¢£|¤��ßÕi•scss³Ï�ð¾�¡−ÜÕË

#release task grunt.registerTask 'release-compile', 'sassのコンパイルをするよ (RELEASE)', [ 'checkConflict' //コンパイルするファイルに未解消のコンフリクトがないかチェック 'clean:sass' //sassの一時ファイルを削除 'compass:release' //コンパイル 'clean:css' //古いcssを削除 'lightpng' //リポジトリに追加された画像を圧縮 'copy:sass' //アプリケーションのフォルダにcssをコピー 'csso'//cssoで最適化 'resizeImage' //画像のリサイズ 'cssImage1x' //android用のcss生成 'growl:sass' //おわったらgrowlで通知 ]

Page 22: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

^Š¢›¤ÜÕË

Page 23: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

GRUNT-LIGHTPNGcompass�Šø¢{\©−sprite«(»32bit”png�¡−âß�»m−¦∙�À‚>�ºß¤z¶o

Page 24: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

«(”ò&º�g³{−|–Šø��¡©�...

Page 25: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

git ls-tree��ýÔç�唫(”îáә߳<À

gp³}=|–json•|–ZB

$ git ls-tree -r HEAD

{ 'foobar1.png':{ 'hash' : 'e1456604d111dd4' }, 'foobar2.png':{ 'hash' : 'u12358fffgs84jc' }}

Page 26: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

json�‚v”îáә߳ӡ−�ò&\©¤ô¹¾�w°v−”��əߕ‾©–�

�oqÜÕ˳¢ß—|¤

#画像をミニファイするメソッドminify = -> file = queue.shift() unless file _end() return

steps = [ -> _exec "./tools/bin/lightpng #{file} -32i #{file}",()-> _next steps.shift() ,-> _next minify ]

_next steps.shift()

Page 27: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

o«o«>ø�Ïþ�è§v¶z–Ø���ßÕô•«(�¡−øq•¶ß—|¤Ł�¤|Ł�¤|

Page 28: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

�t”�¬³›–o−ö�ÔÂËç»o—”�¬2fiíÁîÁØ—“—“Ä|–−^Ì ÜÕËØ�g|–o›–o−Šøa»q<c”Þߊ•¶©�•¶−∙xo–z−Ûî

Page 29: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

GRUNTRR”o¬o¬

Page 30: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

GRUNT-CONTRIBЙ”ö�̾�j

©ıł•Ønpm•u�\©¤ÜÕËw1000ıö

https://github.com/gruntjs/grunt-contrib

Page 31: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

GRUNT-INITgrunt³³›¤ö�ÔÂË甿¶=³ä�ö�ßçvœ¢

{¡−âß�ÑvœŠ)�ÁŁ−þ »©³³q�Û

https://github.com/gruntjs/grunt-init

Page 32: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

YEOMAN

grunt�bower¶∙³�áö|¤ô�ߊ�ßËÏþ�èÑo�ŽÝ�¶JS¼ö�”ö{w|\öw−

Ufl“¦∙YEOMAN way•pqÈowm−� ZZö{•|¤oþ »q‘oþ wIovØ

http://yeoman.io/

Page 33: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

—�Ł

Page 34: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

ß<»»o—|¤�ÍÓÂ�ÕË�öç»|ÄÎ

Š)�ÑvœC�z”�»¶z�ìÚ•H”<wo¤Ïßè³ÓÂ�ÕË�öçvœ|¡���Ñ��Øc−

�)”C”Ïßè³��|¤”�œ∼앶−

Page 35: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

GRUNT = ô��çÃ�èåù�áð•�›–”|Ä

Page 36: gumistudy#15 How to Automate Tasks grunt.jsを使ったタスク自動化

u°ß’∼÷mßw�q’‘o—|¤�