🚴
知らなくても困らない!Rust製js関連ツール2023
ネットを徘徊する中で見つけたRust製のフロントエンド関連ツールを簡単に紹介します。
2023年中に公開する予定だった雑学です。書くのに飽きたので放流します。若干内容が古いかもしれないです。
CSS
servo/rust-cssparser
servoで利用されています。
Rust製のCSSパーサー。主にRustで書かれたブラウザエンジンであるlightningcss
vercel VPoEであるLee Robinson氏が発表していた通りNext.jsはswc_cssに変わってlightningcssへの移行を行なっています。
また、上記では触れられていませんがswc pluginのcss周りも全てlightningcssになるかもしれません。
Next.js内部で使われていたのはswc_cssというパーサーでした。ですが元々メインでメンテナンスしていたAlexander Akaitさんはすでにvercelを退社しており、今後の保守が難しいと判断したようです。今後はNext.jsに加えて、swcのplugin、turbopackもlightningcssに移植していくでしょう。
railwind
なんとtailwind cssコンパイラのRustバージョン!現在あまり更新されていません。
Transpiler
swc
言わずとしれたRust製Parser,Transpiler, Minifier。実はちょっと前にswcpackというバンドル機能もありましたが現在は開発されていません(Turbopackがあるため)
Bundler
rspack
ByteDance社のWeb Infra teamが中心として開発しているwebpackのdrop-in-replacementを目指したツール。
turbopack
Tobias Koppers氏がVercelで開発しているwebpackの後継ツール。
Webpack開発者のrolldown
2024年3月にオープンソースになりました。
farm
Rust版vite。vite-compatibleなのでプラグインとかもそのまま使えるらしい。viteとの相違点や開発動機はドキュメント参照。
mako
Alipayの内部で開発されているらしいバンドルツール。リポジトリは公開されていません。
Formatter
dprint
TypeScriptやDefinitelyTypedのリポジトリで使われています。
deno fmtの中身。biome
今の所JavaScipt、TypeSciptのFormatter、Linterを備えています。最近Vue, Svelte, AstroのSciptタグ内のformat,lintもできるようになりました。現在CSSの対応が進んでます。
node.jsのリポジトリで使おうという試みがされています。
Linter
rslint
現在積極的な開発はされていません。biomeが一部実装の参考にしています。
deno_lint
deno lintの中身
Oxc
Boshen氏の元趣味プロジェクト。現在はParser, Linter, Resolverが開発されています。
Package manager
pacquet
pnpm傘下で開発されている試験的なRust製package manager。
volt
同じくRust製package manager。現在開発は止まっています。
Type Checker
ezno
Rustで書かれたTypeScript型checker。ただし、tsc完全互換は目指していません(anyの扱いが違ったりする) 現在試験的にOxcを通じて使うこともできます。
stc
tscの完全互換を目指したプロジェクト。作者多忙につき開発停止。
おまけ
TypeRunner
TypeRunnerはTypeScriptをBytecodeに変換してVMで型検査を実行します。残念ながら2年ほど更新されていません。
こちらRustではなくC++製のTypeScript型チェッカー。アプローチも異なっておりtyvm
型レベルのTypeScriptのみに絞った実験的なプロジェクト。Rustで書いたコンパイラでコードからBytecodeに変換してZigで書いたVMで実行しているようです。
Discussion