Submit Search
gulp-sprockets、あるいはRailsのAssetsのビルドについて
6 likes
•
2,528 views
yo_waka
Node学園 19限目の発表資料
Technology
Read more
1 of 16
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
More Related Content
PDF
AWS Black Belt Techシリーズ AWS Lambda Updates
Amazon Web Services Japan
PDF
ES2015をRailsアプリに導入しようとして思わぬ闇にハマった話
Nobuhito Ibaraki
PDF
さくらのクラウドアップデート情報2016年7月版
さくらインターネット株式会社
PDF
How to upgrade your rails application to rspec3
Junichi Ito
PDF
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
Nao Minami
PDF
さくらのクラウドサービス概要資料2016年8月版
さくらインターネット株式会社
PPT
AWS free tier maximization
Kenkichi Okazaki
PDF
とりあえず使えるSBT
Kiyotaka Kunihira
AWS Black Belt Techシリーズ AWS Lambda Updates
Amazon Web Services Japan
ES2015をRailsアプリに導入しようとして思わぬ闇にハマった話
Nobuhito Ibaraki
さくらのクラウドアップデート情報2016年7月版
さくらインターネット株式会社
How to upgrade your rails application to rspec3
Junichi Ito
DeNA×マネーフォワード×Wantedly Railsエンジニアセミナー
Nao Minami
さくらのクラウドサービス概要資料2016年8月版
さくらインターネット株式会社
AWS free tier maximization
Kenkichi Okazaki
とりあえず使えるSBT
Kiyotaka Kunihira
What's hot
(6)
PDF
Inspector CLI (JAWS-UG 京王線支部 #4 LT)
Kenkichi Okazaki
PPTX
2016/12/17 ASP.NET フロントエンドタスク入門
miso- soup3
KEY
Scotty + Aeson + Persistentで作るJSON Web API
Daisuke Fujimura
PDF
「さくらのクラウド」を使って10分でできるDocker (オープンソースカンファレンス2016 Gunma)
さくらインターネット株式会社
PDF
2016/05/01 Visual Studio with Cordova
miso- soup3
PPTX
Our Track to Modern Angular
Yuta Shimizu
Inspector CLI (JAWS-UG 京王線支部 #4 LT)
Kenkichi Okazaki
2016/12/17 ASP.NET フロントエンドタスク入門
miso- soup3
Scotty + Aeson + Persistentで作るJSON Web API
Daisuke Fujimura
「さくらのクラウド」を使って10分でできるDocker (オープンソースカンファレンス2016 Gunma)
さくらインターネット株式会社
2016/05/01 Visual Studio with Cordova
miso- soup3
Our Track to Modern Angular
Yuta Shimizu
Ad
Similar to gulp-sprockets、あるいはRailsのAssetsのビルドについて
(8)
PDF
僕はどうしてもLibsassが使いたかったんだ!
Masato Noguchi
PDF
Asset Pipeline for Perl
Yoshihiro Sasaki
PDF
RailsのRailから解放される始めの一歩
Masato Noguchi
PPTX
片手間JS on Rails
Ryunosuke SATO
PDF
Gulp入門 - コーディングを10倍速くする
Hayashi Yuichi
PDF
フロントエンド制作向け ビルドツールGruntを PHPバックエンド開発で利用する @M_Ishikawa #phpcon2013
Masayuki Ishikawa
PDF
イマドキのコーダー環境構築2016
Sou Lab
PDF
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
Toshimichi Suekane
僕はどうしてもLibsassが使いたかったんだ!
Masato Noguchi
Asset Pipeline for Perl
Yoshihiro Sasaki
RailsのRailから解放される始めの一歩
Masato Noguchi
片手間JS on Rails
Ryunosuke SATO
Gulp入門 - コーディングを10倍速くする
Hayashi Yuichi
フロントエンド制作向け ビルドツールGruntを PHPバックエンド開発で利用する @M_Ishikawa #phpcon2013
Masayuki Ishikawa
イマドキのコーダー環境構築2016
Sou Lab
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
Toshimichi Suekane
Ad
Recently uploaded
(10)
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
20250729_Devin-for-Enterprise
Masaki Yamakawa
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
gulp-sprockets、あるいはRailsのAssetsのビルドについて
1.
gulp-sprockets, あるいはRailsのAssets のビルドについて 2016/02/09 Node学園 19限目 @yo_waka
2.
はじめまして • @yo_waka • Software
Engineer @ freee • 会計サービスの開発 • 普段はRuby, JavaScriptを書いてます
3.
We are using
Rails!
4.
Are you using
Sprockets?
5.
Sprockets • アセットファイルの連結・圧縮 • manifest.jsonによるブラウザキャッシュを考慮したパ ス管理 •
CoffeeScript, SCSSのコンパイル • Railsではsprockets-rails経由でRailsとSprocketsを繋ぐ ことでAssets Pipelineをよしなにやってくれる
6.
Sprocketsとの蜜月 • application.js.coffeeにCoffeeScript書くと自動でJSにコンパイルされて読み 込まれる! 分割しても「//= require
form」と書くだけで結合してくれる! • application.css.scssにSass書くと自動でCSSにコンパイルされて読み込まれ る! 分割しても「/**= require form」と書くだけで結合してくれる! • XXX-railsなフロントエンドのgem、追加するだけで使える! • サービスの規模も小さく、フロントエンドに明るいエンジニアがいない時代 はとにかく便利
7.
しんどい事案が増える • とあるxxx-railsなフロントエンド系gemが全然本体をバージョン アップしてくれない • フロントエンドgemとbower(bower-rails)の混在 =>
このライブラリ、本体はどこにあるねん • とあるSCSSファイルのコンパイルだけで1時間かかるようになって しまった • フロントだけビルドしてCDNにデプロイ、とかやろうとしてもRails が必要
8.
進化についていく • ES2015で書いていくぞ • React&JSXで書いていくぞ •
共通コンポーネントはnpmパッケージ化 • 共通スタイルはnpmパッケージ化 • やっていくぞという人たちが増えてアセットのビルドプロ セスを改善する機運が高まった
9.
移行しよう • Node.js側(gulp+webpack)に移行が進む コードベースが巨大なので少しずつ移行させる • とあるxxx-railsなフロントエンド系gemが全然バージョンアップし てくれない =>
npmパッケージから利用 • とあるSCSSファイルのコンパイルだけで1時間かかるようになっ てしまった => libsassだと3分。ruby-sassからnode-sassへ
10.
npm+sprockets • browserify, gulp,
webpackなどでビルド => app/assetsに成果物を吐く => 後は通常のSprocketsのassets pipeline(=rake assets:precompile) で • これはこれでしんどい • gulp, Sprockets両方でやってること知らないとビルド周りでおかしく なったときに対処しづらい(ビルドしたものをビルドし直すのもおか しい気もする) => libsassとruby-sassのバージョン違いによるエラーなど
11.
移行期の辛み • application.jsから画面ごとにJSを切り出して ES2015化 => ES2015化したJSファイルをstubしないと application.jsがビルドエラー •
application.jsとES2015化したJS両方から呼び 出すコンポーネントのビルドがめんどい
12.
gulp-sprockets • https://github.com/waka/gulp-sprockets • SprocketsがやってくれることをGulpストリームのみで実 現する(したい)ためのGulpプラグイン •
npm run buildのみでRailsのassetsをビルドすることを目 指している • 使い方等はREADMEやsample下のgulpfileをご覧ください
13.
gulp-sprockets • 既存のRailsのassetsのビルドプロセスをnpmに完全に置き換えるための移行中 のビルドを支えるのが目的 • なので、現状requireディレクティブの挙動は合わせている(単純に指定された パスのファイルをconcat) •
manifest.jsonもgulpのビルドタスクで簡単に管理できる(削除 => 再作成) => manifest.json重複問題の恐怖から逃れられる • manifest.jsonに書き出すストリームを分けているので、その機能だけを使うこ ともできる => Babelのみでビルドが完結するファイルはmanifest.jsonにだけ書き出す
14.
中でやってること • Esprima, PostCSSでコメント部をパースしてSprocketsディレクティブ (require,
require_tree, stub, etc)を解釈 => CoffeeScriptの複数行コメントによるディレクティブのパースは非 対応です・・ • CoffeeScript, SCSSのコンパイル • asset_pathやimage_urlなどRailsヘルパ関数の組み込み(node-sassの カスタム関数として) • manifest.jsonの生成
15.
TODO • Sprocketsディレクティブの完全サポート(現 状は100%サポートしているわけではない) • ES2015で書いたファイルもrequireディレク ティブで読み込みたい(そうするとコンポー ネント単位からでもES2015への移行ができ る)
16.
少し宣伝 • 2/16発売のWEB+DB PRESS「Web サービス開発徹底攻略vol.2」に、 freee社の「急成長を支えたコード とプロセスの改善」が収録されてい ます。 その後の取り組み(主にフロントエ ンド周り)についても書かれている ので、ぜひご覧ください!
Download