Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Sprocketsઈͪʹઓͨ͠ @katryo
Slide 2
Slide 2 text
@katryo RubyͱRailsɺ͖Ͱ ͢ɻ %FOLJOPWFMͱ͍͏8FCΞϓϦӡӦͯ͠·͢ɻ ʮ8FCΤϯδχΞͷͨΊͷ8FCαʔϏεσβΠϯ࣮ફߨ࠲ʯ ͷࡐʹͳΓ·ͨ͠
Slide 3
Slide 3 text
࠷ॳʹ݁
Slide 4
Slide 4 text
4QSPDLFUT ઈͯ·ͤΜͰͨ͠
Slide 5
Slide 5 text
ͯ͞
Slide 6
Slide 6 text
4QSPDLFUTͱʁ
Slide 7
Slide 7 text
Rack͚ϥΠϒϥϦ • ΞηοτʹΞΫηε͢ΔͨΊͷύεཧ • SASS, CoffeeScriptͳͲͷίϯύΠϧ • ίϯύΠϧ࣌ɺϋογϡΛ༩͑ͯdigest͢ Δ͜ͱͰ͖Δ • ґଘؔཧ
Slide 8
Slide 8 text
ศར ͚ͩͲ ͨ·ʹࠔΔ
Slide 9
Slide 9 text
SprocketsΛ͍ͬͯͯࠔΔ͜ͱ • ϓϦίϯύΠϧͰམͪΔ • productionͩͱͳ͔ͥը૾͕404 • CoffeeScriptҎ֎ͷAltJS͍͍ͨ • σΧΠ͠ԿͬͯΔ͔Α͘Θ͔ΒΜ
Slide 10
Slide 10 text
rake assets:precompile Λஔ͖͑Δ
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
औͬͨઓུ • gulpͰ࣮ߦλεΫΛཧ • SASS, CoffeeͷίϯύΠϧgulpͷλεΫͰ࣮ߦ • NodeͷύοέʔδnpmͰཧ • ϑϩϯτΤϯυͷϥΠϒϥϦbowerͰཧ • JSͷґଘؔBrowserifyͰղܾ
Slide 13
Slide 13 text
rake assets:precompileͰͬͯ ͍Δ͜ͱΛ࠶ݱͤͶͳΒͳ͍ • app/assets ҎԼͷϑΝΠϧΛίϯύΠϧ • ϑΝΠϧ໊ʹϋογϡΛͯ͠digestʹ͢Δ • public/assetsҎԼʹΞηοτΛೖΕΔ • ݩͷϑΝΠϧ໊ͱdigestʹͳͬͨϑΝΠϧ໊ͱͷ ϚοϐϯάΛmanifest-{md5ͷϋογϡ}.jsonʹॻ ͍ͯpublic/assetsʹೖΕΔ
Slide 14
Slide 14 text
Ͳ͏ͬͨΒ rake assets:precompileΛ ସͰ͖Δͷ͔ʁ
Slide 15
Slide 15 text
SprocketsͷλεΫΛସ • CoffeeScript, SCSSΛίϯύΠϧ • JSΛॱ൪௨Γʹฒͯ1ͭͷϑΝΠϧʹ͢Δ • JSΛuglify • CSSΛminify • ϑΝΠϧ໊ʹϋογϡΛՃͯ͠digest͢Δ
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
CoffeeScript, SCSSΛ ίϯύΠϧ
Slide 18
Slide 18 text
gulpͰΑ͘Δͭ sass = require ‘gulp-sass' gulp.task 'css', -> gulp .src ['./app/assets/stylesheets/*.scss', './bower_components/ bootstrap-sass/dist/css/bootstrap.min.css'] .pipe plumber() .pipe sass()
Slide 19
Slide 19 text
ίϯύΠϧղܾ
Slide 20
Slide 20 text
JSΛॱ൪௨Γʹฒͯ1ͭͷ ϑΝΠϧʹ͢Δ
Slide 21
Slide 21 text
Browserify & Debowerify
Slide 22
Slide 22 text
Browserify • NodeͷྲّྀͰॻ͍ͨJSͷίʔυΛϒϥ β͚ʹม͢Δ • ґଘؔΛఆٛͯ͠هड़Ͱ͖Δ • ͱͱNodeύοέʔδΛϒϥβ Ͱ͑ΔΑ͏ʹ͢ΔϥΠϒϥϦͩͬͨ • ࠓͰͦͷతͰ͑Δ
Slide 23
Slide 23 text
Debowerify • BowerύοέʔδΛBrowserify͕ѻ͑ΔΑ͏ʹ ͢Δ • gulpͷbrowserifyλεΫͰར༻͢Δ
Slide 24
Slide 24 text
JSͷgulp task
Slide 25
Slide 25 text
entry.coffee /PEFͬΆ͘ɺґଘؔΛهड़
Slide 26
Slide 26 text
JSͷґଘؔղܾ
Slide 27
Slide 27 text
JSΛuglify => gulp-uglify CSSΛminify => concat͔ͯ͠Β gulp-css-minify
Slide 28
Slide 28 text
ܰྔԽɾಡԽղܾ
Slide 29
Slide 29 text
ϑΝΠϧ໊ʹϋογϡΛ Ճͯ͠digest͢Δ
Slide 30
Slide 30 text
rake assets:precompile ͷࣄͷͻͱͭ
Slide 31
Slide 31 text
digestͱʁ ϑΝΠϧͷ༰ΛͱʹϋογϡΛࢉग़͠ɺ ϑΝΠϧ໊ʹه͢Δɻ somefile.js => somefile-d2403a83.js ϑΝΠϧͷ༰͕มԽͨ͠ͱ͖͚ͩɺϑΝΠϧ໊ม Խ͢Δɻ ϒϥβͷΩϟογϡରࡦɺCDNରԠʹޮՌత
Slide 32
Slide 32 text
image_path(‘pic.jpg’) ͱ͔ͷϝιουͰɺ ಡΈࠐΉϑΝΠϧΛ ಈతʹมԽ͍ͤͯ͞Δ asset_path(‘background.jpg’)
Slide 33
Slide 33 text
gulp-rev & gulp-rev-rails-manifest
Slide 34
Slide 34 text
ϑΝΠϧ໊ʹϋογϡΛՃͯ͠ɺ manifest-{md5hash}.jsonΛ࡞Δ
Slide 35
Slide 35 text
manifest-{md5hash}.json public/assetsͷϑΝΠϧ໊ͱɺapp/assetsͷϑΝΠϧ໊ͷ ରԠ͚Λهड़ɻSprockets͜ΕΛಡΜͰɺasset_pathͳͲͷ ύεΛϑΝΠϧ໊ͱؔ࿈͚Δ
Slide 36
Slide 36 text
digestղܾ ……ͱɺ͜ͷͱ͖ࢥ͍ͬͯ·ͨ͠
Slide 37
Slide 37 text
࠷ޙͷఢ
Slide 38
Slide 38 text
CSSͷasset_path
Slide 39
Slide 39 text
css.erb(scss.erb)ͷதͰ asset_pathΛ͍ͬͯΔ background: url(<%= asset_path(’retina_wood.png’) %>);
Slide 40
Slide 40 text
μϝͰͨ͠
Slide 41
Slide 41 text
• scss.erbɺNodeͰCSSʹίϯύΠϧͤͶ ͳΒͳ͍ • ͔͠͠scss.erbͷasset_pathϝιουɺ NodeͰཧղͰ͖ͳ͍ • ແཧΆ͍……
Slide 42
Slide 42 text
͜ΕΛղܾ͢Δʹʁ • CSSͰɺdigestͱݩϑΝΠϧ໊ͷؔ࿈͚Λ ߦ͏ϝιουɺNodeͰղܾͰ͖Δॻ͖ํͰ ߦ͏ • ؤுΕasset_pathͱ͔Λmanifest.jsonʹର Ԡͤͯ͞ɺcssͷॻ͖͑Λߦ͏ॲཧΛNode Ͱࣗ࡞Ͱ͖ͦ͏͚ͩͲɺͪΐͬͱ໘ͦ͏
Slide 43
Slide 43 text
ͰCSSͰ SprocketsΛΘͳ͚Ε ͳΜͱ͔ͳΔ
Slide 44
Slide 44 text
ײ
Slide 45
Slide 45 text
SprocketsઈͪɺͰ͖ͳ͘ͳ͍͚Ͳ ͚ͬ͜͏໘Ͱͨ͠ ! ΔͳΒ֮ޛͯ͠Ͷˑ