# 静的サイトの環境構築

webpack.config.js の書き方が難しい。

webpack.config.js だけで今の所やっているが、webpack-merge を使って、本番環境と開発環境を分けたほうが良いらしい。

  • webpack.common.js
  • webpack.dev.js
  • webpack.prod.js

↑ みたいな感じ

# 画像表示

src/img/test.png のように画像を入れた場合。

webpack.config.js

module.exports = {
  ...
  resolve: {
    alias: {
      assets: path.resolve(__dirname, "src")
    }
  },
  ...
  module: {
    rules: [
      {
        test: /\.(png|jpg|jpeg|gif|svg)$/,
        use: [
          {
            loader: "file-loader",
            options: {
              name: "/img/[name].[ext]"
            }
          }
        ]
      }
    ]
    ...
  }
}

scss 上では画像を読み込める。

test.scss

.test {
  background: url("~assets/img/test.png");
}

ただ、pug 上で imgタグ を用いて画像を表示できなかったので調べる。

copy-webpack-plugin を使ってあらかじめ読み込んでおくと良いのかも表示できる?

# 無理やりやるとできた?

src/img/testtest.png のように画像を入れた場合。

context · webpack/docs Wikiのように、src/js/index.js

src/js/index.js

function requireAll(req) {
  return req.keys().map(req);
}
requireAll(require.context("../img", true, /[^\/]+.(png|jpg|jpeg|gif|svg)$/));

とかくと、

src/views/test.pug

img(src="./img/testtest.png")

で表示できた。