99
gulp + sass で目指せ倍速コーディング 東区フロントエンド勉強会 2015年 第2回 gulpfile.js の分割管理と画像作成の効率化 1 フロントエンド エンジニア 末包 俊道(すえかね) http://excode.jp エクスコード株式会社 第4章 gulpfile.js の分割管理 第5章 画像を自動で最適化しよう 第6章 default タスクで一括 watch 第7章 CSSスプライトを自動化しよう

gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

Embed Size (px)

Citation preview

Page 1: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

gulp + sass で目指せ倍速コーディング東区フロントエンド勉強会 2015年 第2回

gulpfile.js の分割管理と画像作成の効率化

1

フロントエンド エンジニア

末包 俊道(すえかね)

http://excode.jpエクスコード株式会社

第4章 gulpfile.js の分割管理 第5章 画像を自動で最適化しよう 第6章 default タスクで一括 watch 第7章 CSSスプライトを自動化しよう

Page 2: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

第4章 gulofile.js の分割管理

2

第4章 gulpfile.js の分割管理

http://excode.jp

Page 3: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

第4章 gulofile.js の分割管理

1. 現状の確認 2. 設定ファイルを作ろう (config.js) 3. 設定ファイルを読み込もう 4. ここまでの動作確認をしよう 5. タスクを別ファイルで管理しよう 6. 動作確認をしよう

3http://excode.jp

第4章 gulofile.js の分割管理

Page 4: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

第4章 gulofile.js の分割管理

4

1. 現状の確認

http://excode.jp

Page 5: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

1. 現状の確認

5

'use strict'; var gulp = require('gulp');var sass = require('gulp-sass');var csscomb = require('gulp-csscomb');var autoprefixer = require('gulp-autoprefixer');var plumber = require('gulp-plumber'); gulp.task('sass', function () { gulp.src('./develop/sass/**/*.sass') .pipe(plumber()) .pipe(sass().on('error', sass.logError)) .pipe(csscomb()) .pipe(autoprefixer({ browsers:['safari 5', 'ie 8', 'ie 9', 'ie 10', 'ie 11', 'opera 12.1', 'firefox 14', 'ios 6', 'android 2.1'], cascade: false })) .pipe(gulp.dest('./html/css'));}); gulp.task('sass:watch', function () { gulp.watch('./develop/sass/**/*.sass', ['sass']);});

gulpfile.js

http://excode.jp

第4章 gulofile.js の分割管理

Page 6: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

1. 現状の確認

6

'use strict'; var gulp = require('gulp');var sass = require('gulp-sass');var csscomb = require('gulp-csscomb');var autoprefixer = require('gulp-autoprefixer');var plumber = require('gulp-plumber'); gulp.task('sass', function () { gulp.src('./develop/sass/**/*.sass') .pipe(plumber()) .pipe(sass().on('error', sass.logError)) .pipe(csscomb()) .pipe(autoprefixer({ browsers:['safari 5', 'ie 8', 'ie 9', 'ie 10', 'ie 11', 'opera 12.1', 'firefox 14', 'ios 6', 'android 2.1'], cascade: false })) .pipe(gulp.dest('./html/css'));}); gulp.task('sass:watch', function () { gulp.watch('./develop/sass/**/*.sass', ['sass']);});

gulpfile.js

http://excode.jp

第4章 gulofile.js の分割管理

案件に合わせて簡単に 変更できるようにしたい

Page 7: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

1. 現状の確認

7

'use strict'; var gulp = require('gulp');var sass = require('gulp-sass');var csscomb = require('gulp-csscomb');var autoprefixer = require('gulp-autoprefixer');var plumber = require('gulp-plumber'); gulp.task('sass', function () { gulp.src('./develop/sass/**/*.sass') .pipe(plumber()) .pipe(sass().on('error', sass.logError)) .pipe(csscomb()) .pipe(autoprefixer({ browsers:['safari 5', 'ie 8', 'ie 9', 'ie 10', 'ie 11', 'opera 12.1', 'firefox 14', 'ios 6', 'android 2.1'], cascade: false })) .pipe(gulp.dest('./html/css'));}); gulp.task('sass:watch', function () { gulp.watch('./develop/sass/**/*.sass', ['sass']);});

gulpfile.js

http://excode.jp

第4章 gulofile.js の分割管理

案件に合わせて簡単に 変更できるようにしたい

設定ファイルを作成し、 一括管理しよう

Page 8: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

第4章 gulofile.js の分割管理

8

2. 設定ファイルを作ろう (config.js)

http://excode.jp

Page 9: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

2. 設定ファイルを作ろう(config.js)

9http://excode.jp

第4章 gulofile.js の分割管理

> cd Desktop\lessonまたは> cd C:\Users\ユーザー名\Desktop\lesson

gulpfile.js のあるディレクトリに移動

Windows の方

$ cd ~/Desktop/lesson

gulpfile.js のあるディレクトリに移動

Mac の方

$ touch config.js

config.js を作成します

> type nul > config.js

config.js を作成します

Page 10: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回10

lesson ├ .csscomb.json │ ├ config.js ←今回追加した設定ファイル

├ develop │ └ sass │ └ style.sass │ ├ gulpfile.js │ ├ html │ ├ css │ │ └ style.css │ │ │ └ index.html │ ├ node_modules └ package.json

http://excode.jp

第4章 gulofile.js の分割管理

2. 設定ファイルを作ろう(config.js)

Page 11: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回11

// 開発用ディレクトリ

// 納品用ディレクトリ

// データ受け渡し用のオブジェクトを作成

// Sass の設定

config.js

http://excode.jp

第4章 gulofile.js の分割管理

2. 設定ファイルを作ろう(config.js)

・開発用ディレクトリのパス・納品用ディレクトリのパス・データ受け渡し用オブジェクト・sass の設定

設定したいこと

Page 12: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回12

// 開発用ディレクトリ

// 納品用ディレクトリ

// データ受け渡し用のオブジェクトを作成

// Sass の設定

config.js

http://excode.jp

第4章 gulofile.js の分割管理

2. 設定ファイルを作ろう(config.js)

・開発用ディレクトリのパス - ./develop

・納品用ディレクトリのパス - ./html

・データ受け渡し用オブジェクト

・Sass の設定 - Sass ファイル(監視対象) - CSS 出力ディレクトリ

設定したいこと

Page 13: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回13

// 開発用ディレクトリvar src = './develop';

// 納品用ディレクトリ

// データ受け渡し用のオブジェクトを作成

// Sass の設定

config.js

http://excode.jp

第4章 gulofile.js の分割管理

2. 設定ファイルを作ろう(config.js)

設定したいこと

・開発用ディレクトリのパス - ./develop

・納品用ディレクトリのパス - ./html

・データ受け渡し用オブジェクト

・Sass の設定 - Sass ファイル(監視対象) - CSS 出力ディレクトリ

※ src … source (元データ)

Page 14: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回14

// 開発用ディレクトリvar src = './develop';

// 納品用ディレクトリvar dest = './html';

// データ受け渡し用のオブジェクトを作成

// Sass の設定

config.js

http://excode.jp

第4章 gulofile.js の分割管理

2. 設定ファイルを作ろう(config.js)

設定したいこと

・開発用ディレクトリのパス - ./develop

・納品用ディレクトリのパス - ./html

・データ受け渡し用オブジェクト

・Sass の設定 - Sass ファイル(監視対象) - CSS 出力ディレクトリ

※ dest … destination (出力先)

Page 15: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回15

config.js

http://excode.jp

第4章 gulofile.js の分割管理

2. 設定ファイルを作ろう(config.js)

設定したいこと

・開発用ディレクトリのパス - ./develop

・納品用ディレクトリのパス - ./html

・データ受け渡し用オブジェクト

・Sass の設定 - Sass ファイル(監視対象) - CSS 出力ディレクトリ

// 開発用ディレクトリvar src = './develop';

// 納品用ディレクトリvar dest = './html';

// データ受け渡し用のオブジェクトを作成module.exports = { // Sass の設定};

Page 16: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回16

// 開発用ディレクトリvar src = './develop';

// 納品用ディレクトリvar dest = './html';

// データ受け渡し用のオブジェクトを作成module.exports = { // Sass の設定};

config.js

http://excode.jp

第4章 gulofile.js の分割管理

2. 設定ファイルを作ろう(config.js)

例)オブジェクトの書式

object = { tanaka: { city: 'Fukuoka', phone: '090-xxxx-xxxx', age: 25, gender: 'male' }};

例)田中さんの性別

object.tanaka.age

// male

Page 17: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回17

// 開発用ディレクトリvar src = './develop';

// 納品用ディレクトリvar dest = './html';

// データ受け渡し用のオブジェクトを作成module.exports = {

// ディレクトリの情報を受け渡す src: src, dest: dest,

// Sass の設定};

config.js

http://excode.jp

第4章 gulofile.js の分割管理

2. 設定ファイルを作ろう(config.js)

設定したいこと

・開発用ディレクトリのパス - ./develop

・納品用ディレクトリのパス - ./html

・データ受け渡し用オブジェクト

・Sass の設定 - Sass ファイル(監視対象) - CSS 出力ディレクトリ

Page 18: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回18

// 開発用ディレクトリvar src = './develop';

// 納品用ディレクトリvar dest = './html';

// データ受け渡し用のオブジェクトを作成module.exports = {

// ディレクトリの情報を受け渡す src: src, dest: dest,

// Sass の設定 sass: { src: src + '/sass/**/*.sass', dest: dest + '/css', }};

config.js

http://excode.jp

第4章 gulofile.js の分割管理

2. 設定ファイルを作ろう(config.js)

設定したいこと

・開発用ディレクトリのパス - ./develop

・納品用ディレクトリのパス - ./html

・データ受け渡し用オブジェクト

・Sass の設定 - Sass ファイル(監視対象) - CSS 出力ディレクトリ

Page 19: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

第4章 gulofile.js の分割管理

19

3. 設定ファイルを読み込もう

http://excode.jp

Page 20: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回20

'use strict'; var gulp = require('gulp');var sass = require('gulp-sass');var csscomb = require('gulp-csscomb');var autoprefixer = require('gulp-autoprefixer');var plumber = require('gulp-plumber');var conf = require('./config'); gulp.task('sass', function () { gulp.src('./develop/sass/**/*.sass') .pipe(plumber()) .pipe(sass().on('error', sass.logError)) .pipe(csscomb()) .pipe(autoprefixer({ browsers:['safari 5', 'ie 8', 'ie 9', 'ie 10', 'ie 11', 'opera 12.1', 'firefox 14', 'ios 6', 'android 2.1'], cascade: false })) .pipe(gulp.dest('./html/css'));}); gulp.task('sass:watch', function () { gulp.watch('./develop/sass/**/*.sass', ['sass']);});

gulpfile.js

http://excode.jp

第4章 gulofile.js の分割管理

3. 設定ファイルを読み込もう

設定ファイルを読み込みます

var conf = require('./config');

Page 21: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回21

'use strict'; var gulp = require('gulp');var sass = require('gulp-sass');var csscomb = require('gulp-csscomb');var autoprefixer = require('gulp-autoprefixer');var plumber = require('gulp-plumber');var conf = require('./config');

gulp.task('sass', function () { gulp.src(conf.sass.src) .pipe(plumber()) .pipe(sass().on('error', sass.logError)) .pipe(csscomb()) .pipe(autoprefixer({ browsers:['safari 5', 'ie 8', 'ie 9', 'ie 10', 'ie 11', 'opera 12.1', 'firefox 14', 'ios 6', 'android 2.1'], cascade: false })) .pipe(gulp.dest(conf.sass.dest));}); gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

gulpfile.js

http://excode.jp

第4章 gulofile.js の分割管理

元データ(監視対象)の .sass ファイル

3. 設定ファイルを読み込もう

値を書き換えます

出力先ディレクトリconf.sass.dest

conf.sass.src

Page 22: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

第4章 gulofile.js の分割管理

22

4. ここまでの動作確認をしよう

http://excode.jp

Page 23: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回23

http://excode.jp

第4章 gulofile.js の分割管理

4. ここまでの動作確認をしよう

Windows の方 Mac の方

$ gulp sass:watch[15:38:32] Starting 'sass:watch'...[15:38:32] Finished 'sass:watch' after 10 ms

gulp sass:watch タスクを実行してみます

> gulp sass:watch[15:38:32] Starting 'sass:watch'...[15:38:32] Finished 'sass:watch' after 10 ms

gulp sass:watch タスクを実行してみます

watch モードに入りました

動作確認のため、watch モードに入りますgulp sass:watch

Page 24: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回24

http://excode.jp

第4章 gulofile.js の分割管理

4. ここまでの動作確認をしよう

style.sass に追記

前回までと同じように style.sass に変更を加え保存してみてください

h2 color: blue

Windows の方 Mac の方

$ gulp sass:watch [15:38:32] Starting 'sass:watch'... [15:38:32] Finished 'sass:watch' after 10 ms [15:38:40] Starting 'sass'... [15:38:40] Finished 'sass' after 9.06 ms

gulp sass:watch タスク

> gulp sass:watch [15:38:32] Starting 'sass:watch'... [15:38:32] Finished 'sass:watch' after 10 ms [15:38:40] Starting 'sass'... [15:38:40] Finished 'sass' after 9.06 ms

gulp sass:watch タスク

CSSファイルが正しく更新されていれば完了です。

Page 25: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

第4章 gulofile.js の分割管理

25

5. タスクを別ファイルで管理しよう

http://excode.jp

Page 26: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回26

'use strict'; var gulp = require('gulp');var sass = require('gulp-sass');var csscomb = require('gulp-csscomb');var autoprefixer = require('gulp-autoprefixer');var plumber = require('gulp-plumber');var conf = require('./config');

gulp.task('sass', function () { gulp.src(conf.sass.src) .pipe(plumber()) .pipe(sass().on('error', sass.logError)) .pipe(csscomb()) .pipe(autoprefixer({ browsers:['safari 5', 'ie 8', 'ie 9', 'ie 10', 'ie 11', 'opera 12.1', 'firefox 14', 'ios 6', 'android 2.1'], cascade: false })) .pipe(gulp.dest(conf.sass.dest));});

gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

gulpfile.js

http://excode.jp

第4章 gulofile.js の分割管理

作業手順

5. タスクを別ファイルで管理しよう

・require-dir をインストール

・requireDir を定義 - ./gulp_task

・外部タスク用ディレクトリを作成 - ./gulp_task

・sass タスクを sass.js として保存 - ./gulp_task/sass.js

・watch タスクを watch.js として保存 - ./gulp_task/watch.js

Page 27: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回27

'use strict'; var gulp = require('gulp');var sass = require('gulp-sass');var csscomb = require('gulp-csscomb');var autoprefixer = require('gulp-autoprefixer');var plumber = require('gulp-plumber');var conf = require('./config');

gulp.task('sass', function () { gulp.src(conf.sass.src) .pipe(plumber()) .pipe(sass().on('error', sass.logError)) .pipe(csscomb()) .pipe(autoprefixer({ browsers:['safari 5', 'ie 8', 'ie 9', 'ie 10', 'ie 11', 'opera 12.1', 'firefox 14', 'ios 6', 'android 2.1'], cascade: false })) .pipe(gulp.dest(conf.sass.dest));});

gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

gulpfile.js

http://excode.jp

第4章 gulofile.js の分割管理

作業手順

5. タスクを別ファイルで管理しよう

・require-dir をインストール

・requireDir を定義 - ./gulp_task

・外部タスク用ディレクトリを作成 - ./gulp_task

・sass タスクを sass.js として保存 - ./gulp_task/sass.js

・watch タスクを watch.js として保存 - ./gulp_task/watch.js

Page 28: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回28

http://excode.jp

第4章 gulofile.js の分割管理

5. タスクを別ファイルで管理しよう

一旦、watch から抜けて作業に入ります

Windows の方 Mac の方

[13:09:14] Starting 'sass'...[13:09:14] Finished 'sass' after 980 μs^C$

ctrl + c を押し、一旦タスクを終了します

[13:09:14] Starting 'sass'...[13:09:14] Finished 'sass' after 980 μs^C>

ctrl + c を押し、一旦タスクを終了します

Page 29: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回29

指定したディレクトリ内の .js ファイルを自動で読み込みます

require-dirhttps://www.npmjs.com/package/require-dir

http://excode.jp

5. タスクを別ファイルで管理しよう

第4章 gulofile.js の分割管理

Page 30: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回30

Windows の方 Mac の方

> npm install require-dir --save-dev

require-dir を追加

$ npm install require-dir --save-dev

require-dir を追加

http://excode.jp

第4章 gulofile.js の分割管理

5. タスクを別ファイルで管理しよう

require-dir をインストールします

Page 31: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回31

'use strict';

var requireDir = require('require-dir');var dir = requireDir('./gulp_task');

var gulp = require('gulp');var sass = require('gulp-sass');var csscomb = require('gulp-csscomb');var autoprefixer = require('gulp-autoprefixer');var plumber = require('gulp-plumber');var conf = require('./config');

gulp.task('sass', function () { gulp.src(conf.sass.src) .pipe(plumber()) .pipe(sass().on('error', sass.logError)) .pipe(csscomb()) .pipe(autoprefixer({ browsers:['safari 5', 'ie 8', 'ie 9', 'ie 10', 'ie 11', 'opera 12.1', 'firefox 14', 'ios 6', 'android 2.1'], cascade: false })) .pipe(gulp.dest(conf.sass.dest));});

gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

gulpfile.js

http://excode.jp

第4章 gulofile.js の分割管理

作業手順

5. タスクを別ファイルで管理しよう

・require-dir をインストール

・requireDir を定義 - ./gulp_task

・外部タスク用ディレクトリを作成 - ./gulp_task

・sass タスクを sass.js として保存 - ./gulp_task/sass.js

・watch タスクを watch.js として保存 - ./gulp_task/watch.js

Page 32: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回32

'use strict';

var requireDir = require('require-dir');var dir = requireDir('./gulp_task');

var gulp = require('gulp');var sass = require('gulp-sass');var csscomb = require('gulp-csscomb');var autoprefixer = require('gulp-autoprefixer');var plumber = require('gulp-plumber');var conf = require('./config');

gulp.task('sass', function () { gulp.src(conf.sass.src) .pipe(plumber()) .pipe(sass().on('error', sass.logError)) .pipe(csscomb()) .pipe(autoprefixer({ browsers:['safari 5', 'ie 8', 'ie 9', 'ie 10', 'ie 11', 'opera 12.1', 'firefox 14', 'ios 6', 'android 2.1'], cascade: false })) .pipe(gulp.dest(conf.sass.dest));});

gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

gulpfile.js

http://excode.jp

第4章 gulofile.js の分割管理

5. タスクを別ファイルで管理しよう

・require-dir をインストール

・requireDir を定義 - ./gulp_task

・外部タスク用ディレクトリを作成 - ./gulp_task

・sass タスクを sass.js として保存 - ./gulp_task/sass.js

・watch タスクを watch.js として保存 - ./gulp_task/watch.js

作業手順

Page 33: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回33

http://excode.jp

第4章 gulofile.js の分割管理

5. タスクを別ファイルで管理しよう

タスク用 gulp_task ディレクトリを作成

Windows の方 Mac の方

$ mkdir gulp_task

gulp_task ディレクトリを作成

> mkdir gulp_task

gulp_task ディレクトリを作成

$ touch gulp_task/sass.js$ touch gulp_task/watch.js

gulp_task 内に sass.js ファイルを作成

> type nul gulp_task\sass.js> type nul gulp_task\watch.js

gulp_task 内に sass.js ファイルを作成

ついでに sass,js watch.js も作成します

Page 34: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回34

lesson ├ .csscomb.json │ ├ config.js ├ develop │ └ sass │ └ style.sass │ ├ gulp_task ←今回追加したタスク用ディレクトリ │ ├ sass.js │ └ watch.js │ ├ gulpfile.js │ ├ html │ ├ css │ │ └ style.css │ │ │ └ index.html │ ├ node_modules └ package.json

http://excode.jp

第4章 gulofile.js の分割管理

5. タスクを別ファイルで管理しよう

Page 35: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回35

'use strict';

var requireDir = require('require-dir');var dir = requireDir('./gulp_task');

var gulp = require('gulp');var sass = require('gulp-sass');var csscomb = require('gulp-csscomb');var autoprefixer = require('gulp-autoprefixer');var plumber = require('gulp-plumber');var conf = require('./config');

gulp.task('sass', function () { gulp.src(conf.sass.src) .pipe(plumber()) .pipe(sass().on('error', sass.logError)) .pipe(csscomb()) .pipe(autoprefixer({ browsers:['safari 5', 'ie 8', 'ie 9', 'ie 10', 'ie 11', 'opera 12.1', 'firefox 14', 'ios 6', 'android 2.1'], cascade: false })) .pipe(gulp.dest(conf.sass.dest));});

gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

gulpfile.js

http://excode.jp

第4章 gulofile.js の分割管理

5. タスクを別ファイルで管理しよう

・require-dir をインストール

・requireDir を定義 - ./gulp_task

・外部タスク用ディレクトリを作成 - ./gulp_task

・sass タスクを sass.js として保存 - ./gulp_task/sass.js

・watch タスクを watch.js として保存 - ./gulp_task/watch.js

作業手順

Page 36: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回36

'use strict'; var requireDir = require('require-dir');var dir = requireDir('./gulp_task');

gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

gulpfile.js

http://excode.jp

第4章 gulofile.js の分割管理

5. タスクを別ファイルで管理しよう

var gulp = require('gulp');var sass = require('gulp-sass');var csscomb = require('gulp-csscomb');var autoprefixer = require('gulp-autoprefixer');var plumber = require('gulp-plumber');var conf = require('../config');

gulp.task('sass', function () { gulp.src(conf.sass.src) .pipe(plumber()) .pipe(sass().on('error', sass.logError)) .pipe(csscomb()) .pipe(autoprefixer({ browsers:['safari 5', 'ie 8', 'ie 9', 'ie 10', 'ie 11', 'opera 12.1', 'firefox 14', 'ios 6', 'android 2.1'], cascade: false })) .pipe(gulp.dest(conf.sass.dest));});

sass.js (./gulp_task/sass.js)

作業手順

・require-dir をインストール

・requireDir を定義 - ./gulp_task

・外部タスク用ディレクトリを作成 - ./gulp_task

・sass タスクを sass.js として保存 - ./gulp_task/sass.js

・watch タスクを watch.js として保存 - ./gulp_task/watch.js

Page 37: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回37

'use strict'; var requireDir = require('require-dir');var dir = requireDir('./gulp_task');

gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

gulpfile.js

http://excode.jp

第4章 gulofile.js の分割管理

5. タスクを別ファイルで管理しよう

作業手順

・require-dir をインストール

・requireDir を定義 - ./gulp_task

・外部タスク用ディレクトリを作成 - ./gulp_task

・sass タスクを sass.js として保存 - ./gulp_task/sass.js

・watch タスクを watch.js として保存 - ./gulp_task/watch.js

Page 38: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回38

'use strict'; var requireDir = require('require-dir');var dir = requireDir('./gulp_task');

gulpfile.js

http://excode.jp

第4章 gulofile.js の分割管理

5. タスクを別ファイルで管理しよう

var gulp = require('gulp');var conf = require('../config');

gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

watch.js (./gulp_task/watch.js)

作業手順

・require-dir をインストール

・requireDir を定義 - ./gulp_task

・外部タスク用ディレクトリを作成 - ./gulp_task

・sass タスクを sass.js として保存 - ./gulp_task/sass.js

・watch タスクを watch.js として保存 - ./gulp_task/watch.js

Page 39: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

第4章 gulofile.js の分割管理

39

6. 動作確認をしよう

http://excode.jp

Page 40: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回40

http://excode.jp

第4章 gulofile.js の分割管理

6. 動作確認をしよう

Windows の方 Mac の方

$ gulp sass:watch[15:38:32] Starting 'sass:watch'...[15:38:32] Finished 'sass:watch' after 10 ms

gulp sass:watch タスクを実行してみます

> gulp sass:watch[15:38:32] Starting 'sass:watch'...[15:38:32] Finished 'sass:watch' after 10 ms

gulp sass:watch タスクを実行してみます

watch モードに入りました

動作確認のため、watch モードに入りますgulp sass:watch

Page 41: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回41

http://excode.jp

第4章 gulofile.js の分割管理

6. 動作確認をしよう

style.sass に追記

style.sass に変更を加え保存してみてください

h2 color: pink

Windows の方 Mac の方

$ gulp sass:watch [15:38:32] Starting 'sass:watch'... [15:38:32] Finished 'sass:watch' after 10 ms [15:38:40] Starting 'sass'... [15:38:40] Finished 'sass' after 9.06 ms

gulp sass:watch タスク

> gulp sass:watch [15:38:32] Starting 'sass:watch'... [15:38:32] Finished 'sass:watch' after 10 ms [15:38:40] Starting 'sass'... [15:38:40] Finished 'sass' after 9.06 ms

gulp sass:watch タスク

CSSファイルが正しく更新されていれば完了です。

Page 42: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

第5章 画像を自動で最適化しよう

42

第5章 画像を自動で最適化しよう

http://excode.jp

Page 43: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

第5章 画像を自動で最適化しよう

1. 概要 2. タスクを作ろう 3. 動作確認をしよう

43http://excode.jp

第5章 画像を自動で最適化しよう

Page 44: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回44

1. 概要

http://excode.jp

第5章 画像を自動で最適化しよう

Page 45: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回45

作業用のディレクトリに保存

http://excode.jp

第5章 画像を自動で最適化しよう

最適化された画像が書き出される

作業用ディレクトリ 最適化(納品用)ディレクトリ

JPEG (93KB)

JPEG (65KB)

JPEG (70KB)

JPEG (48KB)

PNG (92KB)PNG (25KB)

Page 46: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回46

2. タスクを作ろう

http://excode.jp

第5章 画像を自動で最適化しよう

Page 47: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回47

http://excode.jp

第5章 画像を自動で最適化しよう

・必要なプラグインをインストール

・作業用ディレクトリを作成 - ./images

・設定ファイルを編集 - ./config.js

・image タスクを image.js として保存 - ./gulp_task/image.js

・gulp.watch を watch に変更 - ./gulp_task/watch.js

・watch タスクを watch.js に追記 - ./gulp_task/watch.js

作業手順

image.js (./gulp_task/image.js)

var gulp = require('gulp');var conf = require('../config');

gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

watch.js (./gulp_task/watch.js)

// 開発用ディレクトリvar src = './develop';

… (省略)

config.js2. タスクを作ろう

Page 48: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回48

http://excode.jp

第5章 画像を自動で最適化しよう

・必要なプラグインをインストール

・作業用ディレクトリを作成 - ./images

・設定ファイルを編集 - ./config.js

・image タスクを image.js として保存 - ./gulp_task/image.js

・gulp.watch を watch に変更 - ./gulp_task/watch.js

・watch タスクを watch.js に追記 - ./gulp_task/watch.js

作業手順

image.js (./gulp_task/image.js)

var gulp = require('gulp');var conf = require('../config');

gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

watch.js (./gulp_task/watch.js)

// 開発用ディレクトリvar src = './develop';

… (省略)

config.js2. タスクを作ろう

Page 49: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回49

http://excode.jp

第5章 画像を自動で最適化しよう

OptiPNG よりも高い圧縮率で PNG 画像を圧縮してくれます

gulp-imageminhttps://www.npmjs.com/package/gulp-imagemin

2. タスクを作ろう

imagemin-pngquanthttps://www.npmjs.com/package/imagemin-pngquant

OptiPNG を使い画像を圧縮してくれます

変更があったファイルのみを gulp のストリームに流します

gulp-changedhttps://www.npmjs.com/package/gulp-changed

ファイルの追加も監視対象に含めます

gulp-watchhttps://www.npmjs.com/package/gulp-watch

Page 50: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回50

http://excode.jp

第5章 画像を自動で最適化しよう

2. タスクを作ろう

Windows の方 Mac の方

> npm install gulp-imagemin --save-dev

gulp-imagemin を追加

$ npm install gulp-imagemin --save-dev

gulp-imagemin を追加

必要なプラグインをインストールします

> npm install imagemin-pngquant --save-dev

imagemin-pngquant を追加

$ npm install imagemin-pngquant --save-dev

imagemin-pngquant を追加

> npm install gulp-changed --save-dev

gulp-changed を追加

$ npm install gulp-changed --save-dev

gulp-changed を追加

watch に入っている方は抜けてください

> npm install gulp-watch --save-dev

gulp-watch を追加

$ npm install gulp-watch --save-dev

gulp-watch を追加

Page 51: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回51

http://excode.jp

第5章 画像を自動で最適化しよう

image.js (./gulp_task/image.js)

作業手順

var gulp = require('gulp');var conf = require('../config');

gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

watch.js (./gulp_task/watch.js)

・必要なプラグインをインストール

・作業用ディレクトリを作成 - ./images

・設定ファイルを編集 - ./config.js

・image タスクを image.js として保存 - ./gulp_task/image.js

・gulp.watch を watch に変更 - ./gulp_task/watch.js

・watch タスクを watch.js に追記 - ./gulp_task/watch.js

2. タスクを作ろう

// 開発用ディレクトリvar src = './develop';

… (省略)

config.js

Page 52: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回52

http://excode.jp

第5章 画像を自動で最適化しよう

Windows の方 Mac の方

$ mkdir develop/images

images ディレクトリを作成

> mkdir develop\images

images ディレクトリを作成

2. タスクを作ろう

$ touch gulp_task/image.js

gulp_task 内に sass.js ファイルを作成

> type nul gulp_task\image.js

gulp_task 内に sass.js ファイルを作成

ついでに image.js も作成します

Page 53: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回53

http://excode.jp

第5章 画像を自動で最適化しよう

2. タスクを作ろう

lesson ├ .csscomb.json │ ├ config.js ├ develop │ ├ images ←今回追加した作業用ディレクトリ

│ └ sass │ └ style.sass │ ├ gulp_task │ ├ image.js │ ├ sass.js │ └ watch.js │ ├ gulpfile.js │ ├ html │ ├ css │ │ └ style.css │ ├ images ←タスク実行時に自動で生成されます

│ └ index.html │ ├ node_modules └ package.json

Page 54: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回54

http://excode.jp

第5章 画像を自動で最適化しよう

var src = './develop';var dest = './html';

module.exports = {

src: src, dest: dest,

sass: { src: src + '/sass/**/*.sass', dest: dest + '/css', }, image: { src: src + '/images/**/*', dest: dest + '/images', },

sprite: { src: src + '/sprite/**/*', dest: dest + '/sprite', },};

config.js

・必要なプラグインをインストール

・作業用ディレクトリを作成 - ./images

・設定ファイルを編集 - ./config.js

・image タスクを image.js として保存 - ./gulp_task/image.js

・gulp.watch を watch に変更 - ./gulp_task/watch.js

・watch タスクを watch.js に追記 - ./gulp_task/watch.js

作業手順

2. タスクを作ろう

Page 55: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回55

http://excode.jp

第5章 画像を自動で最適化しよう

var gulp = require('gulp');var imagemin = require('gulp-imagemin');var pngquant = require('imagemin-pngquant');var changed = require('gulp-changed');var plumber = require('gulp-plumber');var conf = require('../config');

gulp.task('image', function () { return gulp.src(conf.image.src) .pipe(plumber()) .pipe(changed(conf.image.dest)) .pipe(imagemin({ progressive: true, svgoPlugins: [{removeViewBox: false}], use: [pngquant()] })) .pipe(gulp.dest(conf.image.dest));});

image.js (./gulp_task/image.js)

・必要なプラグインをインストール

・作業用ディレクトリを作成 - ./images

・設定ファイルを編集 - ./config.js

・image タスクを image.js として保存 - ./gulp_task/image.js

・gulp.watch を watch に変更 - ./gulp_task/watch.js

・watch タスクを watch.js に追記 - ./gulp_task/watch.js

作業手順

2. タスクを作ろう

Page 56: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回56

http://excode.jp

第5章 画像を自動で最適化しよう

var gulp = require('gulp');var watch = require('gulp-watch');var conf = require('../config');

gulp.task('sass:watch', function () { // gulp.watch(conf.sass.src, ['sass']); watch(conf.sass.src, function () { gulp.start(['sass']); });});

watch.js (./gulp_task/watch.js)

・必要なプラグインをインストール

・作業用ディレクトリを作成 - ./images

・設定ファイルを編集 - ./config.js

・image タスクを image.js として保存 - ./gulp_task/image.js

・gulp.watch を watch に変更 - ./gulp_task/watch.js

・watch タスクを watch.js に追記 - ./gulp_task/watch.js

作業手順

2. タスクを作ろう

Page 57: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回57

http://excode.jp

第5章 画像を自動で最適化しよう

var gulp = require('gulp');var watch = require('gulp-watch');var conf = require('../config');

gulp.task('sass:watch', function () { // gulp.watch(conf.sass.src, ['sass']); watch(conf.sass.src, function () { gulp.start(['sass']); });});

gulp.task('image:watch', function () { watch(conf.image.src, function () { gulp.start(['image']); });});

watch.js (./gulp_task/watch.js)

・必要なプラグインをインストール

・作業用ディレクトリを作成 - ./images

・設定ファイルを編集 - ./config.js

・image タスクを image.js として保存 - ./gulp_task/image.js

・gulp.watch を watch に変更 - ./gulp_task/watch.js

・watch タスクを watch.js に追記 - ./gulp_task/watch.js

作業手順

2. タスクを作ろう

Page 58: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回58

3. 動作確認をしよう

http://excode.jp

第5章 画像を自動で最適化しよう

Page 59: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回59

http://excode.jp

第5章 画像を自動で最適化しよう

3. 動作確認をしよう

Windows の方 Mac の方

$ gulp image:watch[15:38:32] Starting 'image:watch'...[15:38:32] Finished 'image:watch' after 10 ms

gulp sass:watch タスクを実行してみます

> gulp image:watch[15:38:32] Starting 'image:watch'...[15:38:32] Finished 'image:watch' after 10 ms

gulp sass:watch タスクを実行してみます

watch モードに入りました

動作確認のため、watch モードに入りますgulp image:watch

Page 60: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回60

http://excode.jp

第5章 画像を自動で最適化しよう

3. 動作確認をしよう

Windows の方 Mac の方$ gulp image:watch [15:38:32] Starting 'image:watch'... [15:38:32] Finished 'image:watch' after 10 ms [15:38:40] Starting 'image'… [15:38:40] gulp-imagemin: Minified 1 image (saved 67.23 kB - 72.7%) [15:38:40] Finished 'image' after 9.06 ms

> gulp image:watch [15:38:32] Starting 'image:watch'... [15:38:32] Finished 'image:watch' after 10 ms [15:38:40] Starting 'image'… [15:38:40] gulp-imagemin: Minified 1 image (saved 67.23 kB - 72.7%) [15:38:40] Finished 'image' after 9.06 ms

wolf.png (92KB) ./develop/images

wolf.png (25KB)

./html/images

./develop/images に画像を保存

./html/images に最適化された画像が 生成されていればOK

Page 61: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回61

第6章 default タスクで一括 watch

http://excode.jp

第6章 default タスクで一括 watch

Page 62: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

第6章 default タスクで一括 watch

1. 概要 2. タスクを作ろう 3. 動作確認をしよう

62http://excode.jp

第6章 default タスクで一括 watch

Page 63: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回63

1. 概要

http://excode.jp

第6章 default タスクで一括 watch

Page 64: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回64

http://excode.jp

Sass CSS

Sass も画像も全部監視対象にしたいgulp

第6章 default タスクで一括 watch

Page 65: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回65

2. タスクを作ろう

http://excode.jp

第6章 default タスクで一括 watch

Page 66: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回66

http://excode.jp

var gulp = require('gulp');var watch = require('gulp-watch');var conf = require('../config');

gulp.task('sass:watch', function () { // gulp.watch(conf.sass.src, ['sass']); watch(conf.sass.src, function () { gulp.start(['sass']); });});

gulp.task('image:watch', function () { watch(conf.image.src, function () { gulp.start(['image']); });});

gulp.task('default', function() { watch(conf.sass.src, function () { gulp.start(['sass']); }); watch(conf.image.src, function () { gulp.start(['image']); });});

watch.js (./gulp_task/watch.js)

・default タスクを作成し、中身をコピペ

作業手順

2. タスクを作ろう

第6章 default タスクで一括 watch

watch に入っている方は抜けてください

Page 67: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回67

3. 動作確認をしよう

http://excode.jp

第6章 default タスクで一括 watch

Page 68: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回68

http://excode.jp

3. 動作確認をしよう

Windows の方 Mac の方

$ gulp[15:38:32] Starting 'default'...[15:38:32] Finished 'default' after 10 ms

gulp タスクを実行してみます

> gulp[15:38:32] Starting 'default'...[15:38:32] Finished 'default' after 10 ms

gulp タスクを実行してみます

watch モードに入りました

動作確認のため、watch モードに入りますgulp

第6章 default タスクで一括 watch

Page 69: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回69

http://excode.jp

3. 動作確認をしよう

sass を変更したり、画像を追加したりしてみてください

Windows の方 Mac の方

$ gulp sass:watch [16:51:18] Starting 'default'... [16:51:18] Finished 'default' after 13 ms [16:51:28] Starting 'image'... [16:51:29] gulp-imagemin: Minified 1 image (saved 67.23 kB - 72.7%) [16:51:29] Finished 'image' after 708 ms [16:51:36] Starting 'sass'... [16:51:36] Finished 'sass' after 18 ms

gulp sass:watch タスク

> gulp sass:watch [16:51:18] Starting 'default'... [16:51:18] Finished 'default' after 13 ms [16:51:28] Starting 'image'... [16:51:29] gulp-imagemin: Minified 1 image (saved 67.23 kB - 72.7%) [16:51:29] Finished 'image' after 708 ms [16:51:36] Starting 'sass'... [16:51:36] Finished 'sass' after 18 ms

gulp sass:watch タスク

意図した通り動作していればOKです

第6章 default タスクで一括 watch

Page 70: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回70

第7章 CSSスプライトを自動化しよう

http://excode.jp

第7章 CSSスプライトを自動化しよう※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Windows 環境でも構築できる Retina対応のCSS スプライト自動化については Sprity を用い別資料を用意します。

Page 71: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回

第7章 CSSスプライトを自動化しよう

1. 概要 2. タスクを作ろう 3. 動作確認をしよう 4. Sassファイルの使い方

71http://excode.jp

第7章 CSSスプライトを自動化しよう※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Windows 環境でも構築できる Retina対応のCSS スプライト自動化については Sprity を用い別資料を用意します。

Page 72: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回72

1. 概要

http://excode.jp

第7章 CSSスプライトを自動化しよう※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Windows 環境でも構築できる Retina対応のCSS スプライト自動化については Sprity を用い別資料を用意します。

Page 73: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回73

http://excode.jp

作業用のディレクトリに保存 CSSスプライトが生成される

./develop/sprite ./html/images

第7章 CSSスプライトを自動化しよう

LOGOLOGO

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Windows 環境でも構築できる Retina対応のCSS スプライト自動化については Sprity を用い別資料を用意します。

Page 74: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回74

http://excode.jp

作業用のディレクトリに保存 → 最適化したCSSスプライト画像を生成

./develop/sprite ./develop/images

第7章 CSSスプライトを自動化しよう

LOGOLOGO

./html/images

LOGO

画像生成 最適化

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Windows 環境でも構築できる Retina対応のCSS スプライト自動化については Sprity を用い別資料を用意します。

Page 75: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回75

2. タスクを作ろう

http://excode.jp

第7章 CSSスプライトを自動化しよう※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 76: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回76

http://excode.jp

第7章 CSSスプライトを自動化しよう

・必要なプラグインをインストール

・作業用ディレクトリを作成 - ./sprite

・設定ファイルを編集 - ./config.js

・ sprite タスクを sprite.js として保存 - ./gulp_task/sprite.js

・watch タスクに追記 - ./gulp_task/watch.js

作業手順

sprite.js (./gulp_task/sprite.js)

var gulp = require('gulp');var conf = require('../config');

gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

… (省略)

watch.js (./gulp_task/watch.js)

// 開発用ディレクトリvar src = './develop';

… (省略)

config.js2. タスクを作ろう

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 77: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回77

http://excode.jp

第7章 CSSスプライトを自動化しよう

・必要なプラグインをインストール

・作業用ディレクトリを作成 - ./sprite

・設定ファイルを編集 - ./config.js

・ sprite タスクを sprite.js として保存 - ./gulp_task/sprite.js

・watch タスクに追記 - ./gulp_task/watch.js

作業手順

sprite.js (./gulp_task/sprite.js)

var gulp = require('gulp');var conf = require('../config');

gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

… (省略)

watch.js (./gulp_task/watch.js)

// 開発用ディレクトリvar src = './develop';

… (省略)

config.js2. タスクを作ろう

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 78: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回78

http://excode.jp

第7章 CSSスプライトを自動化しよう

ディレクトリに追加された画像をスプライト画像とSassを書き出します

css-spritehttps://www.npmjs.com/package/css-sprite

2. タスクを作ろう

条件分岐を使えるようになります

gulp-ifhttps://www.npmjs.com/package/gulp-if

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 79: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回79

http://excode.jp

第7章 CSSスプライトを自動化しよう

Windows の方 Mac の方

> npm install css-sprite —save-dev -g

css-sprite を追加

$ npm install css-sprite —save-dev -g

css-sprite を追加

> npm install gulp-if --save-dev

gulp-if を追加

$ npm install gulp-if --save-dev

gulp-if を追加

2. タスクを作ろう※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 80: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回80

http://excode.jp

第7章 CSSスプライトを自動化しよう

・必要なプラグインをインストール

・作業用ディレクトリを作成 - ./sprite

・設定ファイルを編集 - ./config.js

・ sprite タスクを sprite.js として保存 - ./gulp_task/sprite.js

・watch タスクに追記 - ./gulp_task/watch.js

作業手順

sprite.js (./gulp_task/sprite.js)

var gulp = require('gulp');var conf = require('../config');

gulp.task('sass:watch', function () { gulp.watch(conf.sass.src, ['sass']);});

… (省略)

watch.js (./gulp_task/watch.js)

// 開発用ディレクトリvar src = './develop';

… (省略)

config.js2. タスクを作ろう

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 81: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回81

http://excode.jp

第7章 CSSスプライトを自動化しよう

Mac の方

$ mkdir develop/sprite

sprite ディレクトリを作成

> mkdir develop\sprite

sprite ディレクトリを作成

2. タスクを作ろう

$ touch gulp_task/sprite.js

gulp_task 内に sprite.js ファイルを作成

> type nul gulp_task\sprite.js

gulp_task 内に sprite.js ファイルを作成

ついでに sprite.js も作成します

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 82: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回82

http://excode.jp

第7章 CSSスプライトを自動化しよう

lesson ├ .csscomb.json │ ├ config.js ├ develop │ ├ images │ ├ sass │ │ └ style.sass │ └ sprite ←今回追加した作業用ディレクトリ │ ├ gulp_task │ ├ image.js │ ├ sass.js │ ├ sprite.js │ └ watch.js │ ├ gulpfile.js │ ├ html │ ├ css │ │ └ style.css │ ├ images ←タスク実行時に自動で生成されます

│ └ index.html

2. タスクを作ろう※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 83: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回83

http://excode.jp

第7章 CSSスプライトを自動化しよう

2. タスクを作ろう

var src = './develop';var dest = './html';

module.exports = {

src: src, dest: dest,

sass: { src: src + '/sass/**/*.sass', dest: dest + '/css', }, image: { src: src + '/images/**/*', dest: dest + '/images', },

sprite: { src: src +'/sprite', dest: src +'/images', // スプライト画像出力先 sass: src +'/sass', // Sassディレクトリ style: '_sprite.sass', // Sassファイル名 name: 'my-sprite', // 画像ファイル名 prefix: 'sprite', // mixinプレフィクス cssPath: '../images/', // CSS内のパス processor: 'sass', // sass/scssほか retina: true, // Retina生成 true/false },};

config.js作業手順

・必要なプラグインをインストール

・作業用ディレクトリを作成 - ./sprite

・設定ファイルを編集 - ./config.js

・ sprite タスクを sprite.js として保存 - ./gulp_task/sprite.js

・watch タスクに追記 - ./gulp_task/watch.js

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 84: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回84

http://excode.jp

第7章 CSSスプライトを自動化しよう

2. タスクを作ろう

作業手順

・必要なプラグインをインストール

・作業用ディレクトリを作成 - ./sprite

・設定ファイルを編集 - ./config.js

・ sprite タスクを sprite.js として保存 - ./gulp_task/sprite.js

・watch タスクに追記 - ./gulp_task/watch.js

var gulp = require('gulp');var gulpif = require('gulp-if');var sprite = require('css-sprite').stream;

// generate sprite.png and _sprite.scss gulp.task('sprites', function () { return gulp.src('./src/img/*.png') .pipe(sprite({ name: 'sprite', style: '_sprite.scss', cssPath: './img', processor: 'scss' })) .pipe(gulpif('*.png', gulp.dest('./dist/img/'), gulp.dest('./dist/scss/')))});

sprite.js (./gulp_task/sprite.js)

Usage with Gulp // generate sprite.png and _sprite.scss の内容をコピペします

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 85: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回85

http://excode.jp

第7章 CSSスプライトを自動化しよう

2. タスクを作ろう

var gulp = require('gulp');var gulpif = require('gulp-if');var sprite = require('css-sprite').stream;var plumber = require('gulp-plumber');var conf = require('../config');

gulp.task('sprites', function () { return gulp.src(conf.sprite.src) .pipe(plumber()) .pipe(sprite({ name: conf.sprite.name, style: conf.sprite.style, cssPath: conf.sprite.cssPath, processor: conf.sprite.processor, retina: conf.sprite.retina, prefix: conf.sprite.prefix, })) .pipe(gulpif('*.png', gulp.dest(conf.sprite.spriteDest), gulp.dest(conf.sprite.sass)));});

作業手順

・必要なプラグインをインストール

・作業用ディレクトリを作成 - ./sprite

・設定ファイルを編集 - ./config.js

・ sprite タスクを sprite.js として保存 - ./gulp_task/sprite.js

・watch タスクに追記 - ./gulp_task/watch.js

sprite.js (./gulp_task/sprite.js)

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 86: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回86

http://excode.jp

第7章 CSSスプライトを自動化しよう

2. タスクを作ろう

var gulp = require('gulp');var watch = require('gulp-watch');var conf = require('../config');

gulp.task('sass:watch', function () { … (省略) …});

gulp.task('image:watch', function () { watch(conf.image.src, function () { gulp.start(['image']); });});

gulp.task('sprite:watch', function () { watch(conf.sprite.src, function () { gulp.start(['sprite']); }); watch(conf.image.src, function () { gulp.start(['image']); });});

gulp.task('default', function() { watch(conf.sass.src, function () { gulp.start(['sass']); }); watch(conf.image.src, function () { gulp.start(['image']); }); watch(conf.sprite.src, function () { gulp.start(['sprite']); });});

作業手順

・必要なプラグインをインストール

・作業用ディレクトリを作成 - ./sprite

・設定ファイルを編集 - ./config.js

・ sprite タスクを sprite.js として保存 - ./gulp_task/sprite.js

・watch タスクに追記 - ./gulp_task/watch.js

watch.js (./gulp_task/watch.js)

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 87: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回87

3. 動作確認をしよう

http://excode.jp

第7章 CSSスプライトを自動化しよう※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 88: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回88

http://excode.jp

3. 動作確認をしよう

Windows の方 Mac の方

$ gulp[15:38:32] Starting 'default'...[15:38:32] Finished 'default' after 10 ms

gulp タスクを実行してみます

> gulp[15:38:32] Starting 'default'...[15:38:32] Finished 'default' after 10 ms

gulp タスクを実行してみます

watch モードに入りました

動作確認のため、watch モードに入りますgulp

第7章 CSSスプライトを自動化しよう※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 89: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回89

http://excode.jp

3. 動作確認をしよう

sprite ディレクトリに画像を追加してみてください

Windows の方 Mac の方

$ gulp sass:watch [22:34:19] Starting 'default'... [22:34:19] Finished 'default' after 10 ms [22:34:42] Starting 'sprite'... [22:34:42] Finished 'sprite' after 155 ms [22:34:42] Starting 'image'... [22:34:42] Starting 'sass'... [22:34:42] Finished 'sass' after 8.27 ms [22:34:45] gulp-imagemin: Minified 2 images (saved 203.96 kB - 74.5%) [22:34:45] Finished 'image' after 2.28 s

gulp sass:watch タスク

> gulp sass:watch [22:34:19] Starting 'default'... [22:34:19] Finished 'default' after 10 ms [22:34:42] Starting 'sprite'... [22:34:42] Finished 'sprite' after 155 ms [22:34:42] Starting 'image'... [22:34:42] Starting 'sass'... [22:34:42] Finished 'sass' after 8.27 ms [22:34:45] gulp-imagemin: Minified 2 images (saved 203.96 kB - 74.5%) [22:34:45] Finished 'image' after 2.28 s

gulp sass:watch タスク

意図した通り動作していればOKです

第7章 CSSスプライトを自動化しよう※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 90: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回90

4. Sassファイルの使い方

http://excode.jp

第7章 CSSスプライトを自動化しよう※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 91: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回91

http://excode.jp

第7章 CSSスプライトを自動化しよう

4. Sassファイルの使い方

h1 margin: 0 auto a color: red &.span transform: rotate(-14deg) background-size: 20px 20pxh2 color: pink

style.sass (./develop/sass/style.sass)

LOGOmy-sprite.png (./html/images/my-sprite.png)

logo.png ↓ $logo

right.png ↓ $right

cycle.png ↓ $cycle

保存したファイル名が Sass 内の変数名になります

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 92: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回92

http://excode.jp

第7章 CSSスプライトを自動化しよう

4. Sassファイルの使い方

@import sprite

.logo-mark +sprite($logo)

h1 margin: 0 auto a color: red &.span transform: rotate(-14deg) background-size: 20px 20pxh2 color: pink

style.sass (./develop/sass/style.sass)

LOGOmy-sprite.png (./html/images/my-sprite.png)

logo.png ↓ $logo

right.png ↓ $right

cycle.png ↓ $cycle

保存したファイル名が Sass 内の変数名になります

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 93: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回93

http://excode.jp

第7章 CSSスプライトを自動化しよう

4. Sassファイルの使い方

@import sprite

.logo-mark +sprite($logo)

h1 margin: 0 auto a color: red &.span transform: rotate(-14deg) background-size: 20px 20pxh2 color: pink

style.sass (./develop/sass/style.sass)

.sprite { background-image: url('../images/my-sprite.png');}

@media (min--moz-device-pixel-ratio: 1.5), (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 1.5dppx) { .sprite { background-image: url('../images/[email protected]'); -webkit-background-size: 204px 476px; background-size: 204px 476px; }}

.logo-mark { background-position: -2px -274px; background-repeat: no-repeat; overflow: hidden; display: block; width: 200px; height: 200px;}

h1 { … (以下省略) …

style.css (./home/css/style.sass)

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 94: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回94

http://excode.jp

第7章 CSSスプライトを自動化しよう

4. Sassファイルの使い方

@import sprite

.logo-mark +sprite($logo)

h1 margin: 0 auto a color: red &.span transform: rotate(-14deg) background-size: 20px 20pxh2 color: pink

style.sass (./develop/sass/style.sass)

.sprite { background-image: url('../images/my-sprite.png');}

@media (min--moz-device-pixel-ratio: 1.5), (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 1.5dppx) { .sprite { background-image: url('../images/[email protected]'); -webkit-background-size: 204px 476px; background-size: 204px 476px; }}

.logo-mark { background-position: -2px -274px; background-repeat: no-repeat; overflow: hidden; display: block; width: 200px; height: 200px;}

h1 { … (以下省略) …

style.css (./home/css/style.sass)

この状態では background 関連の 指定が効いていません

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 95: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回95

http://excode.jp

第7章 CSSスプライトを自動化しよう

4. Sassファイルの使い方

@import sprite

.logo-mark@extend .sprite

+sprite($logo)

h1 margin: 0 auto a color: red &.span transform: rotate(-14deg) background-size: 20px 20pxh2 color: pink

style.sass (./develop/sass/style.sass)

生成されれいる .sprite クラスを読み込みます

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 96: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回96

http://excode.jp

第7章 CSSスプライトを自動化しよう

4. Sassファイルの使い方

@import sprite

.logo-mark@extend .sprite

+sprite($logo)

h1 margin: 0 auto a color: red &.span transform: rotate(-14deg) background-size: 20px 20pxh2 color: pink

style.sass (./develop/sass/style.sass)

.sprite, .logo-mark { background-image: url('../images/my-sprite.png');}

@media (min--moz-device-pixel-ratio: 1.5), (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 1.5dppx) { .sprite { background-image: url('../images/[email protected]'); -webkit-background-size: 204px 476px; background-size: 204px 476px; }}

.logo-mark { background-position: -2px -274px; background-repeat: no-repeat; overflow: hidden; display: block; width: 200px; height: 200px;}

h1 { … (以下省略) …

style.css (./home/css/style.sass)

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 97: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回97

http://excode.jp

第7章 CSSスプライトを自動化しよう

4. Sassファイルの使い方

<html> <head> <link rel="stylesheet" href="./css/style.css"> </head> <body> <h2>hello</h2> <div class="logo-mark"></div> </body></html>

index.html (./html/index.html)

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 98: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回98

http://excode.jp

第7章 CSSスプライトを自動化しよう

4. Sassファイルの使い方

この後は position: absolute; など、 使いやすい形で利用してください

※本章の内容は旧プラグイン CSS-Sprite を紹介しておりますが、CSS-Sprite は新版として Sprity という名称で新たに公開されております。Sprity を用いた Windowsでの環境構築も含めた Retina対応のCSS スプライト自動化についての別資料を別途用意します。

Page 99: gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)

東区フロントエンド勉強会 2015年 第1回99

http://excode.jp

お疲れ様でした