如何在 rails 6 中使用 webpack
本人對 webpack 接觸機會不多,之前也只有在寫活動專案才會用 rails 5 的版本下安裝 webpack (拿來用 Vue),然而 rails 6 開始就把 webpack 當作預設工具,讓效能更加提升。
本文將會介紹 webpack 是什麼、為什麼要用、rails 中如何使用 webpack
webpack 是什麼?
Webpack 是一個開源的前端打包工具。Webpack 提供了前端開發缺乏的模組化開發方式,將各種靜態資源視為模組,並從它生成最佳化過的程式碼。 <- from wiki
為什麼需要用 webpack?
因為 webpack 有以下優點可以使專案速度更加提升
- 將任何類型的檔案通通打包給 js,讓 ruby 負擔更少。
- 包含任何類型的檔案到 JavaScript
- ES6、SCSS、CSS、Images、JSON、Coffeescript、LESS…等
- 將以上的東西通通打包,轉換成瀏覽器看得懂的語言。
了解了 Webpack 優點後,接著實際在 rails 中使用
1.新增 rails 6 專案
你會發現在 console
裡面多了個 yarn
這個東西在幫我們安裝套件,而相關的檔案會放在 node_modules
這個資料夾。 專案裡面該裝什麼東西都寫在 package.json
,然而專案是不會把 node_modules
這個資料夾 commit
上去的,而是會去看 package.json
來安裝對應的套件。
安裝好後,看 application.html.erb
會發現
已經被換成
正式宣告 js
的部分由 webpack
處理。
2.安裝 foreman
要邊跑 rails
邊執行 webpack
還需要再安裝 foreman
來處理
建立 Profile
檔案在專案中(與 Gemfile
同層)
接著只要把以往啟動的指令從 rails s
改成 foreman start
就可以囉!
3. 讓 Webpack 處理 css
其實 webpack 也可以幫忙處理 css
的,只需要底下步驟就可以了。
-
首先安裝 bootstrap jquery popper.js
-
接著把 jquery、popper 設定在 environment.js 中
-
js、css 分類
首先在
app/javascript
下分別建立stylesheets
、js
資料夾,建立成功後會跟下面結構一樣。
-
require
光是這樣還不夠,還需要在
packs/application.js
中, requirestylesheets
、js
兩個資料夾
-
require
後預設會找資料夾底下的index
檔
如果沒意外就會看到 bootstrap
成功套用拉~
-
命名
此時追求完美的你是不是覺得哪邊怪怪的? 由於
app/javascript
已經不是原本的形狀了,是不是改名成frontend
比較合適? 其實是可以的,改名後只需要修改webpack.yml
中的 source_path , 把app/javascript
換成app/frontend
就可以囉!
舒服。
總結
該選擇 Sprockets 還是 Webpacker ?
如果專案不大,而且只需要用 js
功能,那就可以不用用到 webpack
。相反的,如果專案大的話可以試著裝上 webpacker
,讓前端的東西都給 webpack
處理,如果你手邊有大型專案的話,慢慢的把 app/assets
都搬來讓 webpack
處理吧!