Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Viteはいいぞ/Vite is Good
dojineko
May 18, 2022
Programming
1
160
Viteはいいぞ/Vite is Good
dojineko
May 18, 2022
Tweet
Share
More Decks by dojineko
See All by dojineko
はじめてでもできた!VR登壇への道 / Let's VR speech!
dojineko
0
98
gRPC-WEBを使ったWEBアプリ開発/Development web-app with gRPC-WEB
dojineko
1
110
もう俺には関係なくないTypeScript/Our TypeScript
dojineko
3
110
TypeScript ではじめる Clean Architecture / Let's start Clean Architecture with TypeScript
dojineko
2
1.9k
Hosting meets .NET / hosting-meets-dotnet
dojineko
0
330
TypeScript と ORM / ORM with TypeScript
dojineko
0
560
コワクナイヨ TypeScript - static typing reloaded -
dojineko
8
2.1k
TypeScript - road to static (typing) ojisan -
dojineko
4
1.1k
マネージドクラウドのフロントエンド事情 / Frontend of Managed cloud
dojineko
7
1.1k
Other Decks in Programming
See All in Programming
GDG Seoul IO Extended 2022 - Android Compose
taehwandev
0
270
Springin‘でみんなもクリエイターに!
ueponx
0
120
The strategies behind ddd – AdeoDevSummit 2022
lilobase
PRO
4
220
Maintaining Software Correctness
dlew
PRO
3
230
ドメインモデル方式のクラス設計 座談会
masuda220
PRO
3
1k
Reactアプリケーションのテスト戦略
0906koki
10
4.6k
ISUCON12 事前講習
rosylilly
3
3.7k
Meet Swift Regex
usamik26
0
240
Amazon ECSのネットワーク関連コストの話
msato
0
610
GitHub Actions を導入した経緯
tamago3keran
1
420
Angular‘s Future without NgModules: Architectures with Standalone Components @enterJS
manfredsteyer
PRO
0
170
IE Graduation Certificate
jxck
6
4.7k
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
113
15k
Happy Clients
brianwarren
89
5.6k
Design by the Numbers
sachag
271
17k
Designing with Data
zakiwarfel
91
3.9k
5 minutes of I Can Smell Your CMS
philhawksworth
196
18k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
655
120k
Building Applications with DynamoDB
mza
83
4.7k
The Cult of Friendly URLs
andyhume
68
4.8k
4 Signs Your Business is Dying
shpigford
169
20k
The Straight Up "How To Draw Better" Workshop
denniskardys
225
120k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
29
4.3k
The Invisible Customer
myddelton
110
11k
Transcript
Viteはいいぞ 2022-05-18 FukuokaJS @dojineko
どじねこ @dojineko GMOペパボ / よろず屋
今日お話しする内容
もくじ ➔ Viteってなぁに? ➔ テストで活躍するVitest ➔ Node.jsアプリが作れるvite-node ➔ まとめ
Viteってなぁに?
まず「Vite」ってなぁに? • Vueの創始者Evan You氏開発の ”次世代のフロントエンドツール” ◦ 「ヴィート」と読みます (フランス語の「高速」に由来) • 高速な開発サーバーやHMR(Hot
Module Replacement)をサポート • RollupなどをベースとしておりネイティブESMで処理される • TypeScriptを標準でサポートする • ほとんどの場合には細かい設定は不要 • VueだけでなくReactやSvelte、VanillaJSなどもサポート • Nuxt.js 3 のビルドシステムとして実験的に採用された
~ 基本使用時のVite周りのざっくりとした関係図 ~ TSX CSS PNG HTML TS エントリに なるHTML
ビルド結果
Webpackで試される設定パズル力の例 .ts を babel-loaderで 処理する設定 webpackで処理する 対象に ts と js
を設定 出力先の設定
ViteでReactを使用する例 react を使う宣言だけ!
ViteでVueを使用する例 vue を使う宣言だけ!
設定がとにかくカンタン!
公式サイトは日本語対応!ブラウザ or1コマンドからはじめられる! 〜 https://ja.vitejs.dev/ 〜
• Viteプラグインの vite-plugin-node を使えば ViteのSSR機構のみを使ってAPIサーバーを開発できる ◦ https://www.npmjs.com/package/vite-plugin-node • ViteがHMRに対応しているので、 開発中には実装の変更はシームレスに反映される
• Express や Koa、Nest、fastify などの メジャーなフレームワークに対応 • フロントエンド部分がいらないよーという場合は便利 【余談】ViteでWebAPIをつくりたいときは?
テストで使えるVitest
Vitestってなあに? • Viteのビルドスタックを使ったテストフレームワーク • テストの世界にもViteの高速なビルドスタックを持ち込める ◦ もちろんESMにも標準対応 • Jestとある程度APIに互換性があり テストファイルの大きな書き換えの必要がない
• やはり設定はほとんどいらない ◦ TypeScriptで書いたテストもそのまま実行できる ◦ jest.config.json 業から解放される
Jestでも試される設定パズル力の例 TSでテストを書きたい けどたくさんの設定を 正しく書くことは難しい
細かい設定が必要なければ vite.config.ts も不要 Vitest向けのViteの設定例 かんたんだね!
expect などの テスト用関数の 参照先を変えればOK テストコードの構造 は大きな変化がない JestのテストをVitestに書き換えた例
テストが約50%高速になった! 実行時間が 約半分に! JestからVitestに移行した事例
Vitest公式でJestからの移行ガイドが用意されています ~ https://vitest.dev/guide/migration.html ~
Node.jsアプリが作れるvite-node
vite-nodeってなあに? • Vitestのコアコンポーネントの一つ ◦ Vitestが更新され続ける間は安泰(かも?) • Viteの高速なビルドスタックを使ってNode.jsアプリを作れる ◦ もちろんESMにも標準対応 •
TypeScriptで書いたコードをそのまま実行できる ◦ ts-node-esm のように使える • Viteの便利な部分をフロントエンドだけではなく、 サーバーアプリやCLIアプリの作成でも活用できる
vite-node を使ったCLIアプリの作成手法をご紹介しています! 〜 vite-nodeでNode.js製のCLIアプリを作る 〜
まとめ
まとめ • ViteはRollupなどをベースとした次世代のビルドシステム • ほとんどの場合に設定がいらない! (ほぼゼロコンフィグ) ◦ 設定ファイルのメンテナンスからの解放 • TypeScriptがすぐかけて実行できる
◦ 何かと面倒な初期設定をズバズバスキップ • 対応パッケージを使用すると、フロントエンド以外でも大活躍 ◦ vitest: 超高速でESMに対応したテストランナー! ◦ vite-node: Node.jsアプリの開発に!
Viteでもっと手軽な開発を!
None