RailsとWebpackerで開発している時に、画像どうやって読み込むのかなと思って調べてみた記録です。
WebpackerのREADMEをのぞいてみる
WebpackerのREADMEの Paths > resolved を参照してみると、assetsをもつアプリとimagesを共有したいときは、webpacker.yml
でresolved_paths
と書いて読み込める、とあります。今回はこれに習って実装しています。
resolved_paths: ['app/assets']
ただし、コンパイルの速度に影響アリ
以下にあるように…
Please be careful when adding paths here otherwise it will make the compilation slow, consider adding specific paths instead of whole parent directory if you just need to reference one or two modules
でかいディレクトリ単位で読み込むとコンパイルが遅くなる、ということのようです。表示速度を気にする場合は注意したいです。
実装例
webpacker.ymlにpathをかく
上でみたように webpacker.yml
に記述していきます。今回はassets/images
配下しか必要としていないので、先ほどの注意点も考慮してimagesまでpathを指定してみました。
resolved_paths: ['app/assets/images']
Vue.jsで使うには
今回は、Vue.jsのコンポーネントで読み込みたかったので、一緒に書いておきます。
<template>
<div>
<!-- imgタグでsrcに"~"をつけてimportしたファイルを指定する -->
<img src="~logo.svg" />
</div>
</template>
<script>
import 'logo.svg'; // ここでimport
</script>
こうやって書いてみるととってもシンプルですね。
以上、少しでも参考になれば嬉しいです。