2021-03-12 webpack css import / bootstrap via webpacker / webpacker extract_css option
webpackでnode_modules配下のcssをimportするときのpathにチルダを入れる
npm install
やyarn install
で追加したcssを@import
するとき、../../node_modules/normalize.css/normalize.css
のようにnode_modules
までのディレクトリを辿っていくのは面倒。
~をパスの先頭につけると、node_modules配下のパスを解決してくれる。
@import "~normalize.css/normalize.css";
なので、このように
~
付きにすればnormalize.cssがimportできるようになる。
Rails 6にjQueryとBootstrapを入れる
エントリポイント(下記例の場合application.js
)内で scss
をimportすれば OK。
これでCSSがJS内で展開されるようになる。
/* app/javascript/stylesheets/application.scss */
@import '~bootstrap/scss/bootstrap';
// app/javascript/packs/application.js
import 'bootstrap';
import '../stylesheets/application';
stylesheet_pack_tag と Webpackerの設定 extract_css - Qiita
上述した設定を行った場合、CSSは単独でリンクされず、JSの中で動的にCSSを設定する、という構造になる。
単独でCSSをリンクしたいのであれば、webpacker の設定で extract_css
の設定を追加する必要がある。
javascript_pack_tag と stylesheet_pack_tag の仕様はこうなってます:development環境では、JavaScriptを使って動的にCSSを埋め込む。CSSファイルを生成してlinkタグに指定することはしない。
development環境でもlinkタグを出すには、config/webpacker.yml で extract_css の値をtrueに変えます 。public/packsを削除してrailsを再起動してください。
# Extract and emit a css file extract_css: true
するとlinkタグが現れます。