LoginSignup
5
1

More than 3 years have passed since last update.

[vue]css-loaderを4.*にしたらesModule optionを切ろう

Last updated at Posted at 2020-08-09

SSIA

私がパワプロ2020で遊んでる間にcss-loaderのv4.0.0がリリースされました。
そうとは知らずいつも通り1からプロジェクトを組んだ結果、vueコンポーネントに書いたsytleがあたらないという現象にぶち当たりました
無題.png
どうして…(ここで猫になる)

SSIAは「タイトルで言うこと全部言ってますよ」という意味です

ではここでcss-loaderのv4.0.0のリリースノートを見てみましょう

  • minimum required Node.js version is 10.13.0
  • minimum required webpack version is 4.27.0
  • the esModule option is true by default
  • default value of the sourceMap option depends on the devtool option

......

はい

  • the esModule option is true by default
  • the esModule option is true by default
  • the esModule option is true by default
  • the esModule option is true by default
  • the esModule option is true by default

ここが原因です
切りましょう

これに気づくのに一晩かかりました

webpack.config.js
{
  // 前略
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: "vue-loader",
        options: {
          hotReload: true,
        },
      },
      {
        test: /\.css$/i,
        use: [
          "vue-style-loader",
          {
            loader: "css-loader",
            // ココ
            options: {
              esModule: false,
            },
          },
        ],
      },
    ],
  },
  // 後略
}

参考

あったらこんなに苦労しなかったのに…強いて言うなら公式です
リリースから日が浅いか自力でwebpack書いてる人が少ないからか騒いでる人は見当たりませんでした

未解決事項

  • これはvueを使う場合に限った問題だろうか?
  • css-loaderのesModuleを切らずにvueや/^vue(-style)?-loader$/側をesModuleに対応させることで解決できないだろうか?
    • loaderの読み込み順からして対応させるならvue-style-loaderと推察されるがこちらにはesModuleスタイルに切り替えるオプションは見当たりませんでした:thinking:
    • vue-loaderはv14時点で強制的にesModuleスタイルになっています
5
1
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
5
1