2018-10-28

Webpack 4でyaml-loaderからjs-yaml-loaderに乗り換え

単なるメモ。

Nuxt 1 + Webpack 3 なプロジェクトでは

okonet/yaml-loader: YAML loader for webpack (converts YAML to JSON)

を使ってこんな感じで、

config.module.rules.push({
  test: /\.ya?ml$/,
  use: [
    { loader: 'json-loader' },
    { loader: 'yaml-loader' }
  ]
})

で YAML を読み込んでいたんだけど、これが Nuxt 2 + Webpack 4 だと cannot find module や Module parse failed: Unexpected token エラーが出て使いものにならなかった。

調べると Webpack 4 で json-loader は不要だの CommonJS, AMD, ESModule だのの扱いが変わって七面倒くさい感じの話があり、YAML を import する方法のブログだけで様々なやり方が出てきて「あーもう、こういうとこやぞ Webpack は!」と思ってたんだけど、そういや Nuxt 1 + Webpack 3 の頃になぜかうまく動かなかったような気がする js-yaml-loader を思い出して試したらあっさり動いた。

ということで Nuxt 2 + Webpack 4 なプロジェクトでは

wwilsman/js-yaml-loader: JS-YAML loader for webpack

を使って

config.module.rules.push({
  test: /\.ya?ml$/,
  use: 'js-yaml-loader'
})

としていこうと思う。ここの変更だけで import 部分は変えずに

import yaml from <path-to-yaml-file>

で ok なので、たいへんよい感じである。

おしまい。

Webpack は機能の根幹に関わる API が変わりすぎだろ。最初からイヤな予感してたけど、やっぱり地雷感強い。

About

例によって個人のなんちゃらです