1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Docker×Rails6】CSSを反映させる

Posted at

Rails6ではJavaScriptのモジュールバンドラとしてWebpackが導入されていますが、
画像やCSSに関しては従来のSprocketがアセットパイプラインとして使用され、
JavaScriptのみをWebpackでコンパイルするようになっています。
そのため画像やCSSを反映させる場合は、変更作業が必要になります。

設定手順

application.html.erb

の内容を書き換えます。
app/views/layouts/application.html.erb
<head>
  <title><%= full_title(yield(:title)) %></title>
  <%= csrf_meta_tags %>
  <%= csp_meta_tag %>
  <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
  # (下の行を追記)webpackがCSSを扱えるようにする
  <%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
  # JavaScriptはデフォルトでwebpacerが pack フォルダをコンパイルして出力している
  <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
  <!--[if lt IE 9]>
      <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/r29/html5.min.js">
      </script>
    <![endif]-->
</head>

YarnでBootstrapをインストール

$ docker-compose exec app yarn add bootstrap jquery popper.js @fortawesome/fontawesome-free

インストールされたモジュールはpackage.jsonで確認できます。

application.js

以下を追記します。

app/javascript/packs/application.js
require("bootstrap");
require("@fortawesome/fontawesome-free");

environment.js

jQueryをどこからでも呼び出せるようにする。

config/webpack/environment.js
const { environment } = require('@rails/webpacker')
var webpack = require('webpack');

environment.plugins.append(
    'Provide',
    new webpack.ProvidePlugin({
        $: 'jquery/src/jquery',
        jQuery: 'jquery/src/jquery',
        Popper: ['popper.js', 'default']
    })
)

module.exports = environment

CSS

以下追記

app/javascript/stylesheets/application.scss(※新規作成すること)
@import '@fortawesome/fontawesome-free/scss/fontawesome';
@import 'bootstrap/scss/bootstrap';

application.js

以下を追記します。

app/javascript/packs/application.js
import '@fortawesome/fontawesome-free/js/all';
import "../stylesheets/application.scss";

最後に、docker-compose restartを実行してブラウザで確認

$ docker-compose restart

無事にCSSが反映されました!

▼参考にさせていただいた記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?