Node.js 18 バージョン 決め方

2023/08/20に公開

package.jsonのengines.nodeを決めるベストプラクティスに悩んだので「あたり」をつけることにしました。

Node.jsにはnpmがついてくるので、これにあわせることにしました。

https://github.com/npm/cli/releases/tag/v9.0.0-pre.0

現行のnpm v9では

npm is now compatible with the following semver range for node: ^14.17.0 || ^16.13.0 || >=18.0.0

なのでNode.js 14.17.0以上か、16.13.0以上か、18.0.0以上(20.0.0含む)をサポートしているようです。

数ヶ月後に公開されるであろうnpm v10では

https://github.com/npm/cli/releases/tag/v10.0.0-pre.0

npm now supports node ^18.17.0 || >=20.5.0

なのでNode.js 18.17.0以上か、20.5.0以上をサポートしているようです。

とりあえずNode.js 18.17.0あたり[1]を使っていき、OpenSSLの関係で古いランタイムしか動かない環境ではNode.js 14.17.0あたりのAPIやES2021とES2022の機能が使えるんだな~といった感じでやっていくことにします。

https://node.green/

Node.js 14.17.0とNode.js 18.17.0のどちらもES2020の機能をほぼ完全にサポート[2]しており、Node.js 18.17.0ではES2023までの機能もサポートしているみたいなので、とてもスッキリしました。

https://github.com/nodejs/Release

脚注
  1. LTSバージョンは新しければ新しいほど幸せになります! ↩︎

  2. オプショナルチェーンとスプレッド構文を組み合わせたfunc?.(...args)みたいなものはNode.js 16.1.0から使えるらしい? node.green以外の情報がなかったため不明。 ↩︎

Discussion