29
gulp 芸 2015/10/28 Gotanda.js #1 @hoto17296

gulp芸

Embed Size (px)

Citation preview

Page 1: gulp芸

gulp 芸

2015/10/28 Gotanda.js #1 @hoto17296

Page 2: gulp芸
Page 3: gulp芸

Join Slack !!

http://gotanda.js.org/

Page 4: gulp芸

gulp.js

• タスクランナー

• Node.js の Stream API

Page 5: gulp芸

gulp.js

.scss.css .min .gz

gzipsass minify

src dest

pipe pipe

Page 6: gulp芸

ふつうの使い方

• ES2015 / AltJS を ES5 にトランスパイル

• JS の minify / bundle

• Sass をコンパイル / minify / autoprefix

• gzip 生成

• lint

Page 7: gulp芸

ふつうじゃない使い方

• ブログとして使う

Page 8: gulp芸

@hoto17296

• ブログ職人

• いままでに 9 回ブログを作りなおしている

• なお、ブログを作って満足してしまって あまり記事を書けていない模様

Page 9: gulp芸

いまのブログ

• http://hotolab.net/

• 最近「 jQuery 滅びよ」とか言ってるのに ブログのデザインに jQuery を使っている

• Jekyll + GitHub Pages

• プラグイン使えないのでカスタムしづらい

Page 10: gulp芸

作りたいブログ (要件)

• 静的なページ群としてビルドできる • 動的なアプリの運用は金がかかる • 静的なページなら無料でも運用できる

• 手軽に書けて手軽に公開できる

• Markdown で書ける

• 書きながら確認できる

Page 11: gulp芸

作りたいブログ (要件)

• Jekyll 風に記事にメタ情報を設定できる

• tag, description, og-image など

• パーマリンクが使える

• http://hotolab.net/blog/{entry_title}

Page 12: gulp芸

「はてなブログを使え」

• 課金しないと独自ドメイン使えない

• ブログに月1000円はちょっとキツい

• ポータビリティが微妙

• Markdown のままエクスポートできない

Page 13: gulp芸

gulp で blog が作れるのか

• 響きが似ているから多分いける

Page 14: gulp芸

0. ディレクトリ構成

src/ _posts/

***.md _layouts/ assets/ index.html.jade

public/ gulpfile.js

Page 15: gulp芸

1. なにはともあれ Markdown

• gulp-markdown

gulp.src('./src/_posts/*.md') .pipe(markdown())

Page 16: gulp芸

2. パーマリンクっぽくする

.pipe(rename((path) => { path.dirname += '/' + path.basename; path.basename = 'index'; path.extname = 'html'; return path;

}))

• gulp-rename

Page 17: gulp芸

3. レイアウトに埋め込む

.pipe(layout({ title: 'My New Blog!!!', layout: './src/_layout/default.jade'

}))

• gulp-layout

Page 18: gulp芸

4. メタ情報をレイアウトに渡す

gulp.src('./src/**/*.md') .pipe(frontMatter()) .pipe(markdown()) .pipe(layout(function(file) {

return file.frontMatter; }))

• gulp-frontmatter

Page 19: gulp芸

参考: Jekyll のメタ情報埋め込み

メタ情報

マークダウン

Page 20: gulp芸

5. 確認できるようにする

gulp.src('./public') .pipe(webserver({

livereload: true, ...

}));

• gulp-webserver

Page 21: gulp芸

6. 公開する ( GitHub Pages )

gulp.src('./public/**') .pipe(ghPages());

• gulp-gh-pages

Page 22: gulp芸

6. 公開する ( Amazon S3 )

gulp.src('./public/**') .pipe(s3({

Bucket: "bucket-name", ...

}));

• gulp-s3-upload

Page 23: gulp芸

6. 公開する ( FTP )

gulp.src('./public/**') .pipe(ftp({

host: 'example.com', user: 'hoto', pass: '1234'

}));

• gulp-ftp

Page 24: gulp芸

7. SNS で拡散する

var oauth = { consumerKey: '...', ...

}; gulp.src('package.json')

.pipe(twitter(oauth, 'ブログ更新!!!'));

• gulp-twitter

Page 25: gulp芸

その他

• gulp-favicons: favicon などをまとめて生成

• gulp-fontmin: フォントのサブセットを作成

• gulp-robots: robots.txt を生成

• gulp-email: メールを送る

Page 26: gulp芸

DEMO

Page 27: gulp芸

したかった (´・_・`)

Page 28: gulp芸

まとめ

• ブログは gulp で作れる!!!

Page 29: gulp芸

Enjoy!!!