ツールの成長の歴史とこれから求められるもの
@hiroppy
node
12 歳になりました
io
ayo
今後
- web platform への親和性を高める
- whatwg URL, streams, etc...
- corepack
- package managers の manager
- ESM
- 安定化と node ライブラリの ESM への移行準備完了
- 10 年後の node の予想 nodejs/next-10
Package Managers
- yarn がでるまでの問題点とその後
- shrinkwrap の不安定さ => lock ファイルがデファクトとなる
- パフォーマンス、キャッシュの問題 => npm/yarn の速度差がほぼなくなる
- workspaces の考え方
- lerna から生まれた新しいリポジトリ設計
node_modules の肥大化
- berry(yarn v2)
- PnP による zero installs
- npm/tink は死んでしまった。。
- pnpm
- シンボリックリンクを使用し、モジュールを 1 回だけ保存し使い回す
Bundlers
- 他にも Packem, FuseBox, Lasso, Stealjs, microbundle(rollup), etc🤯
- 求められてきたことと今後
- 安定性とチャンク最適化
- バンドル以外の機能
- dev-server => livereload, HMR, lazy load components
- transpile => jsx, ts, css, wasm, json, etc...
- #0CJS(0 Config JS)
- speed <- new
Speed
- Parcel 2 beta 3
- parcel は rust と swc に書き換えたことにより、10 倍早くなった
- 現状で webpack で高速化するには? => esbuild-loader
- ts-loader, babel-loader をなくし、esbuild に任せる
- 標準の terser を使わずに esbuild の minimizer を使う
- 今後、parsing, loaders のマルチスレッド化 => チケット
Frontend Build Tools
Toolchain
- linter + formatter + transpiler + bundler
- [IMO] rome が流行る未来はあるのか?
- あり得るが先は長く、その頃の node と deno の関係性による
- node ライブラリを作るプロジェクトでは流行る可能性ある
- 本当に共通の AST にしたことによるユーザーの恩恵が現状に勝るか
- どれだけ web に近い存在になるか
- 一番自分が注目しているプロダクトなので流行ってほしい
deno
- linter, formatter, transpiler(swc), bundler(swc_bundler)が備わった ts/js ランタイム環境
- deno ≒ rome + node.js
- すぐではない数年後、deno がどれぐらい userland で流行るかで
現行のライブラリが左右される可能性がある- node/deno 両方の対応がライブラリに求められる可能性がある
- deno deploy によるサービス運用の進化