JSer.info は、2011年1月16日から開始して、2025年1月16日で14周年を迎えました🎉
書くのがだいぶ遅くなってしまいましたが、14周年を迎えたことを記録しておきます。
Node.js周りの変化
Node.js周りの変化が大きかった1年な気がしました。
Node.jsでは、require(esm)
やTypeScriptのサポートなど長年議論されていていたものが大きく進んだ気はしています。
- 2024-04-26のJS: Electron 30、Firefox 125、Node.js 22、React 19 Beta、TypeScript 5.5 Beta - JSer.info
- 2024-08-15のJS: Node v22.6.0(
--experimental-strip-types
)、Firefox 129 - JSer.info
たとえば、eventmitという小さなライブラリを新しいNode.jsの機能を使って書き直してみると次のような変更ができます。
mocha
をnode:test
とnode --test
に置き換える Node.js 20node --experimental-strip-types
を使うことで、TypeScriptのテストを直接実行できる Node v22.6.0 (Current)node --run
を使うとnpm
/yarn
/pnpm
などをrun-scriptに書かなくて済む Node.js 22require(esm)
がサポートされたことで、CommonJSのビルドを公開しなくて良くなる Node v22.12.0 (LTS)- PR: refactor: move to new Node.js env by azu · Pull Request #7 · azu/eventmit
Node.js自体の機能によって依存が減り、またライブラリを公開する際にCommonJSのビルドを公開する必要性もなくなってきています。
Denoもv2をリリースして、LTSも公開しています。
- 2024-10-16のJS: Deno v2、TypeScript 5.7 Beta、ES2025に入る5つのProposal - JSer.info
- 2024-11-26のJS: Angular v19、Deno 2.1(LTS)、React Router v7(from Remix) - JSer.info
また、Server Runtimeの相互運用性について議論していたWinterCGが、TC55として標準化の作業を進めることも発表されています。
Bunも相変わらずリリースを重ねていて、最近ではNode.jsが内部で使うテストケースを実行してNode.js compatibilityを高めています。
また、Bun v1.2.14では、pnpm Catalogsと同様の機能としてCatalogsをサポートするなど、パッケージマネージャーとしての機能も充実してきています。
パッケージマネージャー
パッケージマネージャーでは、pnpm 10でインストールするパッケージのlifecycle scriptをデフォルトで実行しないように変更されたのが大きなものだったと思います。
この変更の直接的なきっかけはRspackのセキュリティインシデントですが、今後も同様の動作になるパッケージマネージャーは増えていくのかもしれません。(Bunは既に同様の動作になっています)
また、元npmのチームを中心にしたvltという新しいパッケージマネージャー & registryが登場しています。
こちらは、公開後は特にまだ大きな動きはありませんが、JSRもありRegistry周りについても色々と動きが見られた気はします。
pnpm(pnpm add jsr:<scope>/<pkg_name>
)とYarn(yarn add jsr:<scope>/<pkg_name>
)がJSRのサポートをするなど、パッケージマネージャーのサポートも増えてきています。
Linter
JavaScriptにおけるLinterではESLintが引き続き一番利用者が多いと思います。
ESLint 9ではFlat Configへの移行など大きな変更もあったため、一部で移行の問題が起きたりもしていました。
今まではESLintの本体にはTypeScriptに関するルールは含まれていなかったため、typescript-eslintがある種別のツールとしてこの機能を提供していました。
ESLint v9.23.0 releasedあたりから、この方針が少し変更され、ESLintのコアルールもTypeScriptの構文サポートを含むようになってきています。
また、Biome/deno lint/oxlintなどのJavaScript以外の言語で書かれたLinterも活発に開発されています。
ESLintの大きな特徴としてプラグインでルールを追加できる点があります。色々なライブラリやフレームワークがあるJavaScriptの世界では、Linterのプラグインに対するニーズが高いです。
そのため、JavaScript以外の言語で書かれたLinterでは、プラグインをどう扱うかが大きな課題となっています。それぞれのLinterでアプローチが異なりますが、それぞれのLinterがプラグインサポートの仕組みを開発しています。
一方で、ESLintはHTMLやCSSといったJavaScript以外の言語も扱えるようなlanguage-agnostic linterとなる方向性を示しています。
実際にCSS Language Plugin/HTML ESLINT/JSON Language Pluginなどがリリースされています。
そのため、Linterの世界はまだまだ色々な動きがある状態が続きそうです。
まとめ
特にまとめはないですが、JSer.infoは14周年を迎えました。(だいぶ書くのが遅れました)
来年は15周年を迎えるので、久々にイベントとかできるといいなと思っています。
JSer.infoでは、JSer.info Sponsorsを募集しています。
JSer.infoをサポートするには
- 😘 知り合いにJSer.infoをおすすめする
- ❤️ GitHub Sponsorsで@azuのスポンサーになる
- 🐦 X(Twitter)で@jser_infoをフォローする
JSer.info Sponsors
JSer.info SponsorsはGitHub SponsorsとしてJSer.infoを支援してくれている方々です。