きっかけ

利用しているパッケージの脆弱性をチェックした際にパッケージをアップデートすることで解決できそうだったのでバージョンアップしたのですが、Core-JSに依存する部分で色々とエラーが発生して、色々調べてみたところ、最新のパッケージがcore-js@3系に依存していることがわかりました。

core-jsとは

良く利用されている人気のあるポリフィルライブラリです。ポリフィルとは、最近の機能をサポートしていない古いブラウザーなどでその機能を利用出来るようにためのコードのことです。Javascriptでは、10年前は、各ブラウザごとに挙動が変わったりしていましたが、ECMAcript(ES)と呼ばれるような標準規格ができ、ESも1年に1回程度の割合でバージョンアップしています。新しい仕様でコードを書いても、Polyfillライブラリ系を使うことで古い仕様への変換部分は意識しなくて良くなり、コードの可読性が上がります。実際、最近のモダンなJSフレームワークは何らかのポリフィルライブラリに依存しています。

実際に出ていたエラーログ

実際にバージョンアップすると下記のようにエラーが大量に発生しています。core-js関連のパッケージのインストールも促されます。

Nuxt.jsでCore-JS@3を利用する

リリースノートを確認すると2.6系でcore-jsの2系、3系の両方がサポートされているようです。
nuxt.config.jsを下記のように編集するとcore-jsの3系が有効になります。

まとめ

fireabseなどの都合でCore-JS@2関連をベースに開発していたという背景がありますが、脆弱性などの問題もあるため、最新版へのアップデートは、定期的に行わないとだめですね。