SlideShare a Scribd company logo
1 
Gulp入門 ~コーディングを10倍速くする
2 
@frontainer 
Front-end Engineer 
林 優一 
2014/4 LIG入社 
フロントエンドエンジニア 
最近はAngularJSの勉強会に顔を出していました 
ng-mtg#6 - ディレクティブパターン 
第1回AngularJS勉強会@LIG 
現在はWebサイトを作ったりテンプレート作ったり 
いろいろと活動しています。 
http://github.com/frontainer 
GruntからGulpに乗り換えたタイプです
3 
今はGrunt使ってますか?
4 
今日はGulpにしましょう
Gulpとは 
Gruntとの違い 
使うことのメリット 
5 
目次 
Let”s hands on 
カスタマイズ事例 
01 
02 
03 
04 
05
6 
01 Gulpとは 
The streaming build system 
• Node.jsのStreamAPIを利用したビルドシステム 
• Gruntが抱えているいくつかの問題を解決する手段として登場 
• これからはこっちが主流になりそうな予感
7 
02 Gruntとの違い 
プラグインの数やや少ない多い 
Github Star 8,398 8,439 
開始日2013/6/30 2011/9/18 
近い記法NodeっぽいJavaScriptっぽい 
プラグインタイプNodeプラグインGruntプラグイン
8 
02 Gruntとの違い 
SASS Auto 
Prefixer 
CSS 
Min 
SCSS 
コンパイル 
CSS出力 
コンパイル 
CSS出力 
圧縮完成 
SCSS 
Stream 完成 
コンパイルコンパイル圧縮
9 
03 使うことのメリット 
I like gulp. 
• Gruntより設定ファイルが記述しやすい 
• StreamAPIを利用することでGruntより高速でエコ 
• Gruntと同等のプラグインがほぼ出そろってきている
10 
04 Let”s hands on!! 
Gulp.jsを使ってコーディング作業を10倍速くしよう 
1. Node.jsをインストール 
2. Gulp.jsをインストール 
3. gulpfile.jsの作成 
4. SASSのコンパイル 
5. ベンダープレフィックス付与 
6. スタイルガイド生成 
7. JSの圧縮 
8. ファイルの監視と自動化 
9. LiveReload環境構築 
10.エラー時にwatchを止めない
11 
Node.jsをインストール
12 
Node.js http://nodejs.org
13 
確認コマンドnode -v
14 
Gulp.jsをインストール
15 
package.jsonを作成npm init
16 
Gulpインストールnpm install gulp -g
17 
ローカルGulpインストールnpm install gulp --save-dev
18 
gulpfile.jsの作成
19 
gulpfile.js var gulp = require("gulp");
20 
SASSのコンパイル
21 
sass/style.scss 
h1 { 
color: red; 
&:hover { 
color: blue; 
} 
}
22 
gulp-sass npm install gulp-sass --save-dev
23 
gulpfile.js 
var gulp = require("gulp"); 
var sass = require("gulp-sass"); 
! 
gulp.task("sass", function() { 
gulp.src("sass/**/*scss") 
.pipe(sass()) 
.pipe(gulp.dest("./css")); 
});
24 
var gulp = require("gulp"); 
var sass = require("gulp-sass"); 
! 
gulp.task("sass", function() { 
gulp.src("sass/**/*scss") 
.pipe(sass()) 
.pipe(gulp.dest("./css")); 
}); 
タスクの登録 
gulp.task("タスク名",function() {}); 
読み出したいファイルのパターンを指定 
gulp.src("パターン") 
srcで取得したファイルに処理実行 
.pipe(行いたい処理); 
出力先に処理済みのファイルを出力 
gulp.dest("出力先")
25 
パターン文字列 
"sass/style.scss" 
sass/style.scssだけヒット 
! 
"sass/*.scss" 
sassディレクトリ直下にあるscssがヒット 
! 
"sass/**/*.scss" 
sassディレクトリ以下にあるすべてのscssがヒット 
! 
["sass/**/*.scss","!sass/sample/**/*.scss] 
sass/sample以下にあるscssを除くsassディレクトリ以下のscssがヒット 
※ gulp-renameを使うと出力ファイルの名前を簡単に変更することができます。
26 
ベンダープレフィックス付与
27 
gulp-autoprefixer npm install gulp-autoprefixer --save-dev
28 
sass/style.scss 
h1 { 
color: red; 
transition: 200ms ease-out transform; 
&:hover { 
color: blue; 
transform: translate(10px,0); 
} 
}
29 
gulpfile.js 
var gulp = require("gulp"); 
var sass = require(“gulp-sass"); 
var autoprefixer = require("gulp-autoprefixer"); 
! 
gulp.task("sass", function() { 
gulp.src("sass/**/*scss") 
.pipe(sass()) 
.pipe(autoprefixer()) 
.pipe(gulp.dest("./css")); 
});
30 
gulp-frontnote npm install gulp-frontnote --save-dev
31 
gulpfile.js 
var gulp = require("gulp"); 
var sass = require(“gulp-sass"); 
var autoprefixer = require(“gulp-autoprefixer"); 
var frontnote = require("gulp-frontnote"); 
! 
gulp.task("sass", function() { 
gulp.src("sass/**/*scss") 
.pipe(frontnote({ 
css: '../css/style.css' 
})) 
.pipe(sass()) 
.pipe(autoprefixer()) 
.pipe(gulp.dest(“./css”)); 
});
32 
sass/style.scss 
/* 
#overview 
Gulp入門サンプル 
!サンプルファイルです 
*/ 
/*#styleguide 
サンプル見出し1 
!サンプルの見出しスタイル 
hoverすると青くなって10px動く 
``` 
<h1>見出し1</h1> 
``` 
*/
33 
JSを圧縮
34 
gulp-uglify npm install gulp-uglify --save-dev
35 
gulpfile.js 
var gulp = require("gulp"); 
//..(略 
var uglify = require("gulp-uglify"); 
! 
gulp.task("js", function() { 
gulp.src(["js/**/*.js","!js/min/**/*.js"]) 
.pipe(uglify()) 
.pipe(gulp.dest("./js/min")); 
}); 
! 
// (略
36 
ファイルの監視
37 
gulpfile.js 
var gulp = require("gulp"); 
//..(略 
! 
gulp.task("default", function() { 
gulp.watch([“js/**/*.js”,"!js/min/**/*.js"],["js"]); 
gulp.watch(“sass/**/*.scss”,["sass"]); 
});
38 
LiveReload
39 
gulp-browser-sync npm install browser-sync --save-dev
40 
gulpfile.js 
var gulp = require("gulp"); 
//..(略 
var browser = require("browser-sync"); 
! 
gulp.task("server", function() { 
browser({ 
server: { 
baseDir: "./", 
directory: true 
} 
}); 
}); 
! 
// (略
41 
gulpfile.js 
var gulp = require("gulp"); 
//..(略 
gulp.task("js", function() { 
gulp.src([“js/**/*.js””,”!js/min/**/*.js"]) 
.pipe(uglify()) 
.pipe(gulp.dest(“./js/min")) 
.pipe(browser.reload({stream:true})) 
}); 
! 
gulp.task("sass", function() { 
gulp.src("sass/**/*scss") 
.pipe(frontnote()) 
.pipe(sass()) 
.pipe(autoprefixer()) 
.pipe(gulp.dest(“./css")) 
.pipe(browser.reload({stream:true})) 
}); 
// (略
42 
gulpfile.js 
var gulp = require("gulp"); 
//..(略 
gulp.task("default",['server'], function() { 
gulp.watch(["js/**/*.js","!js/min/**/*.js"],["js"]); 
gulp.watch("sass/**/*.scss",["sass"]); 
}); 
// (略
43 
エラー時にwatchを止めない
44 
gulp-plumber npm install gulp-plumber --save-dev
45 
gulpfile.js 
var gulp = require("gulp"); 
//..(略 
var plumber = require(“gulp-plumber"); 
! 
gulp.task("js", function() { 
gulp.src(["js/**/*.js","!js/min/**/*.js"]) 
.pipe(plumber()) 
.pipe(uglify()) 
// (略 
! 
gulp.task("sass", function() { 
gulp.src("sass/**/*scss") 
.pipe(plumber()) 
.pipe(frontnote()) 
// (略
HTML/JSのバリデーション(gulp-htmlhint, gulp-jshint) 
スプライト画像生成(gulp-spritesmith,gulp-sprite-glue) 
HTMLテンプレート(gulp-ejs,gulp-ect,gulp-jade) 
46 
その他の便利プラグイン 
FTP/SFTPアップロード(gulp-sftp,gulp-ftp) 
設定ファイル支援(gulp-load-tasks)
47 
05 カスタマイズ事例 
frontplate 
https://github.com/frontainer/frontplate 
1. SASS 
2. ベンダープレフィックス付与 
3. LiveReload 
4. スタイルガイド生成 
5. EJS(HTMLテンプレート) 
6. JSの依存関係解決 & 結合 & 圧縮 
(Browserify) 
7. 画像の最適化 
8. スプライト画像の生成 
9. スプライトSCSS出力 
10.CSSの最適化 & 圧縮 
11.エラーの通知 
12.HTML/JSのバリデーション
いつもやる作業は自動化しよう 
GulpはGruntよりも短く設定を書くことができる 
オリジナルのgulpfile.jsを作り上げてさらに効率を高めよう! 
48 
まとめ
49 
ご清聴ありがとうございました

More Related Content

PPTX
gulp勉強会@IVP
Daisuke Onoe
 
PPTX
[JavaScript][gulp.js] 一緒に楽しよう!gulp.jsのあれこれ
Yasuhiro Murata
 
PDF
フロント開発をがんばるためにGulpとGruntに入門してみた
Shou Takenaka
 
PDF
gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)
Toshimichi Suekane
 
PPTX
node-gypを使ったネイティブモジュールの作成
shigeki_ohtsu
 
PDF
イマドキのコーダー環境構築2016
Sou Lab
 
PDF
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
Toshimichi Suekane
 
PDF
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
Toshimichi Suekane
 
gulp勉強会@IVP
Daisuke Onoe
 
[JavaScript][gulp.js] 一緒に楽しよう!gulp.jsのあれこれ
Yasuhiro Murata
 
フロント開発をがんばるためにGulpとGruntに入門してみた
Shou Takenaka
 
gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)
Toshimichi Suekane
 
node-gypを使ったネイティブモジュールの作成
shigeki_ohtsu
 
イマドキのコーダー環境構築2016
Sou Lab
 
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
Toshimichi Suekane
 
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
Toshimichi Suekane
 

What's hot (19)

PDF
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
Toshimichi Suekane
 
PDF
Grails 2.0.0.M1の話
Tsuyoshi Yamamoto
 
PDF
Capistrano in practice - WebCareer
Kyosuke MOROHASHI
 
PDF
Gulp ことはじめ
Kyohei Morimoto
 
PPTX
Jjug 20140430 gradle_advanced
Masatoshi Hayashi
 
PDF
入門 Chef Server #biglobetechtalk
BIGLOBE Tech Talk
 
PDF
Gradleどうでしょう
Takuma Watabiki
 
PDF
130207 kyotorb
Yuki Shibazaki
 
PPTX
Chef概論とレシピ実践入門
Kazuto Ohara
 
PDF
Sass/Compassの導入と環境構築
Sou Lab
 
PDF
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
Yukihiko SAWANOBORI
 
PDF
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
BIGLOBE Tech Talk
 
PDF
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
nabe-abk
 
PPTX
OpenShift from Easy way to Hard ? Way
ロフト くん
 
PDF
Chef社内勉強会(第1回)
Yoshinori Nakanishi
 
PDF
Webサーバのチューニング
Yu Komiya
 
PDF
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
Masashi Shinbara
 
PDF
Server specのご紹介
Akira Kaneda
 
PDF
FirebaseとNuxtでLPを作って見た
Kenjiro Kubota
 
gulp + Slim テンプレートエンジンで HTML を効率よく書き出そう
Toshimichi Suekane
 
Grails 2.0.0.M1の話
Tsuyoshi Yamamoto
 
Capistrano in practice - WebCareer
Kyosuke MOROHASHI
 
Gulp ことはじめ
Kyohei Morimoto
 
Jjug 20140430 gradle_advanced
Masatoshi Hayashi
 
入門 Chef Server #biglobetechtalk
BIGLOBE Tech Talk
 
Gradleどうでしょう
Takuma Watabiki
 
130207 kyotorb
Yuki Shibazaki
 
Chef概論とレシピ実践入門
Kazuto Ohara
 
Sass/Compassの導入と環境構築
Sou Lab
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
Yukihiko SAWANOBORI
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
BIGLOBE Tech Talk
 
毎秒2000Requestを捌くPerl製CMSの内部構造(Debianサーバ1台にて)
nabe-abk
 
OpenShift from Easy way to Hard ? Way
ロフト くん
 
Chef社内勉強会(第1回)
Yoshinori Nakanishi
 
Webサーバのチューニング
Yu Komiya
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
Masashi Shinbara
 
Server specのご紹介
Akira Kaneda
 
FirebaseとNuxtでLPを作って見た
Kenjiro Kubota
 
Ad

Viewers also liked (6)

PDF
いい感じのフロントエンド開発環境を作ってみた
Hayashi Yuichi
 
PPTX
ニフティにおけるAtlassian製品のユーザー管理手法
Takayuki Ishikawa
 
PDF
Node js 入門
Satoshi Takami
 
PDF
Design Sprint 概要 / デザインスプリント概要
Takaaki Umada
 
PDF
Design Sprint Process / デザインスプリントの実際のプロセスについて
Takaaki Umada
 
いい感じのフロントエンド開発環境を作ってみた
Hayashi Yuichi
 
ニフティにおけるAtlassian製品のユーザー管理手法
Takayuki Ishikawa
 
Node js 入門
Satoshi Takami
 
Design Sprint 概要 / デザインスプリント概要
Takaaki Umada
 
Design Sprint Process / デザインスプリントの実際のプロセスについて
Takaaki Umada
 
Ad

Similar to Gulp入門 - コーディングを10倍速くする (20)

PDF
Webサイト・フロントエンドの高速化とgrunt.jsについて
Tomo Fujita
 
PPTX
Grunt入門
Tsuyoshi Maeda
 
PDF
Gulp De wordpress in WordBench
Kanako Kobayashi
 
PDF
New Generation Build System "Fly"
deepblue will
 
PDF
jsCafe v13 Grunt
Shinya Sugo
 
PDF
High Performance Gulp
Keisuke Imura
 
PDF
gulp芸
Yuki Ishikawa
 
PDF
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
Masashi Murakami
 
ODP
今流行りのウェブアプリ開発環境Yeoman
tomo_masakura
 
PDF
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~
知己 久保
 
PDF
フロントエンド制作向け ビルドツールGruntを PHPバックエンド開発で利用する @M_Ishikawa #phpcon2013
Masayuki Ishikawa
 
PDF
Ltdd01gulp入門公開用資料
Kazuya Matsubara
 
PDF
Xcode で gulp を使うお話
Yoichiro Sakurai
 
PDF
K初めてのstylus
Kazuki Nakatani
 
PDF
Gruntを導入しよう!の話
Koji Nakamura
 
PDF
早く家へ帰るための
Grunt入門
[+gulp紹介]
Masayuki Maekawa
 
PDF
2015.09.26 gulp使ってみた
Takahiro Uemura
 
PDF
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia
Masayuki Ishikawa
 
PPTX
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
GoAzure
 
PDF
Hakyllで遊んでみた。
Tomohiko Himura
 
Webサイト・フロントエンドの高速化とgrunt.jsについて
Tomo Fujita
 
Grunt入門
Tsuyoshi Maeda
 
Gulp De wordpress in WordBench
Kanako Kobayashi
 
New Generation Build System "Fly"
deepblue will
 
jsCafe v13 Grunt
Shinya Sugo
 
High Performance Gulp
Keisuke Imura
 
gulp芸
Yuki Ishikawa
 
SaCSS vol.63 動的なサイトの開発でgulpとBrowserSyncを使ってみる
Masashi Murakami
 
今流行りのウェブアプリ開発環境Yeoman
tomo_masakura
 
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~
知己 久保
 
フロントエンド制作向け ビルドツールGruntを PHPバックエンド開発で利用する @M_Ishikawa #phpcon2013
Masayuki Ishikawa
 
Ltdd01gulp入門公開用資料
Kazuya Matsubara
 
Xcode で gulp を使うお話
Yoichiro Sakurai
 
K初めてのstylus
Kazuki Nakatani
 
Gruntを導入しよう!の話
Koji Nakamura
 
早く家へ帰るための
Grunt入門
[+gulp紹介]
Masayuki Maekawa
 
2015.09.26 gulp使ってみた
Takahiro Uemura
 
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia
Masayuki Ishikawa
 
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
GoAzure
 
Hakyllで遊んでみた。
Tomohiko Himura
 

More from Hayashi Yuichi (15)

PDF
実務導入に向けたAngularの始め方@Angular入門者の会
Hayashi Yuichi
 
PDF
Dockerとフロントエンド
Hayashi Yuichi
 
PDF
雇われエンジニアがCTOになってIVSに参加するまでの話 - IVS CTO Night 2016-05
Hayashi Yuichi
 
PDF
とりあえず始めるAngular2
Hayashi Yuichi
 
PDF
Angular1.4で作られた自社マイクロサービスを2へマイグレーション
Hayashi Yuichi
 
PDF
LIGでのDocker活用
Hayashi Yuichi
 
PDF
Angularおじさんの1年
Hayashi Yuichi
 
PDF
Automated css
Hayashi Yuichi
 
PDF
今すぐブラウザでES6を使おう
Hayashi Yuichi
 
PDF
LIGにおけるフロントエンドチーム構築
Hayashi Yuichi
 
PDF
One-time Binding & $digest
Hayashi Yuichi
 
PDF
Front-end package managers
Hayashi Yuichi
 
PDF
CSS Living StyleGuide
Hayashi Yuichi
 
PDF
ng-mtg#6 AngularJS ディレクティブ・パターン
Hayashi Yuichi
 
PDF
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
Hayashi Yuichi
 
実務導入に向けたAngularの始め方@Angular入門者の会
Hayashi Yuichi
 
Dockerとフロントエンド
Hayashi Yuichi
 
雇われエンジニアがCTOになってIVSに参加するまでの話 - IVS CTO Night 2016-05
Hayashi Yuichi
 
とりあえず始めるAngular2
Hayashi Yuichi
 
Angular1.4で作られた自社マイクロサービスを2へマイグレーション
Hayashi Yuichi
 
LIGでのDocker活用
Hayashi Yuichi
 
Angularおじさんの1年
Hayashi Yuichi
 
Automated css
Hayashi Yuichi
 
今すぐブラウザでES6を使おう
Hayashi Yuichi
 
LIGにおけるフロントエンドチーム構築
Hayashi Yuichi
 
One-time Binding & $digest
Hayashi Yuichi
 
Front-end package managers
Hayashi Yuichi
 
CSS Living StyleGuide
Hayashi Yuichi
 
ng-mtg#6 AngularJS ディレクティブ・パターン
Hayashi Yuichi
 
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
Hayashi Yuichi
 

Recently uploaded (11)

PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 

Gulp入門 - コーディングを10倍速くする