プロジェクトテンプレート

プラグインには本番環境を想定した 16 個のプロジェクトテンプレートが同梱されており、単なる "Hello World" ではなくプロダクション形状の ReScript アプリをスキャフォールドします。各テンプレートはモダンなツーリング (pnpm/npm/yarn 対応、ESM、該当箇所で Vite+、GitHub Actions CI) を備えた動作するビルド可能なプロジェクトで、2 日目によくある質問「次はどう追加するのか?」に答えるドキュメントが付属します。

ウィザードを開く

  1. IntelliJ IDEA で File → New → Project…

  2. 左側のリストから ReScript を選択

  3. テンプレートとパッケージマネージャを選択

  4. Create をクリック

ターミナルから npm create rescript@latest を実行しても、IDE なしで同じテンプレートセットを利用できます。

カテゴリ: Basic

Basic

Args (argv パース) と Files (node:fs/promises) モジュールを備えた最小限の ReScript + Node.js スターター。ブラウザ以外で動作する ReScript プロジェクトの最小限のリファレンスとして便利です。

Node.js

Basic
npm Library

モジュール単位の Vitest スイートと fetchWithTimeout (AbortController) を備えた分割モジュール構成ライブラリ (IndexListUtilsFetcher)。pnpm publish で npm に公開できる状態です。

Node.js テスト

npm Library
CLI Tool

独自の Args パーサーと Commands/ ディレクトリを持つサブコマンドディスパッチャ (greetinit)。重いフレームワークなしで CLI を成長させる方法を示します。

Node.js

CLI Tool

カテゴリ: Frontend

Vite+ + React

Vite+ を使用したシングルページ React アプリ。フォーム、useStatefetch('/api/greet') の往復 (オフラインフォールバック付き) を備えます。再利用可能な fetch ラッパーとして src/Api.res を同梱しています。

Vite+ pre-1.0

Vite+ + React
Next.js

Server Component (app/page.tsx)、Client Component (app/client/GreetForm.tsx)、Route Handler (app/api/greet/route.ts) を備えた App Router。ReScript コンポーネントは genType 経由で公開されます。

genType

Next.js
Electron

preload.cjs + contextBridge + ipcMain.handle を使用したデスクトップアプリ。src/Electron.res が公開された electronAPI をバインドし、レンダラープロセスの ReScript コードからシステム情報を取得できます。

デスクトップ

Electron
React Native (Expo)

インタラクティブな Todo リスト (useState + TextInput + Button + FlatList) を備えた Expo マネージドアプリ。src/ReactNative.res が RN のコアコンポーネントセットをラップしており、バインディングを拡張すれば機能を追加できます。

モバイル

React Native (Expo)
React Native (Community CLI)

Android Studio / Xcode を直接利用するユーザー向けの bare-workflow React Native テンプレート。JS/TS + ReScript の表層と、.res.mjs を解決する metro.config.js のみを同梱しており、ネイティブプロジェクトは生成後に @react-native-community/cli で作成します。

モバイル Bare workflow

React Native (Community CLI)

カテゴリ: Backend

Hono (REST)

Hono + Drizzle (SQLite) + Zod + @hono/zod-openapi/docs の Scalar UI を組み合わせた構成。完全な users CRUD (src/Routes/Users.res)、drizzle-kit によるマイグレーション、/openapi.json 仕様を同梱しています。

REST OpenAPI SQLite

Hono (Node.js)
Hono + GraphQL

graphql-yoga/graphql でホストし、GraphiQL を内蔵した Hono。SDL は src/schema.graphql、リゾルバは src/Resolvers/Users.res、永続化は Drizzle に配置されています。人間向けドキュメントは pnpm docs:graphql で生成します。

GraphQL SQLite

Hono GraphQL

カテゴリ: Serverless

Cloudflare Workers

wrangler.jsonc と、GREETINGS バインディングを用いた KV 裏付けの greetings エンドポイント (POST/GET)。src/Kv.res が KV API をバインドしており、Durable Objects や R2 に拡張できます。

Edge

Cloudflare Workers
AWS Lambda

POST /orders (JSON body) と GET /orders/:id (パスパラメータ) を備えた API Gateway 向けハンドラ。README には @aws-sdk/lib-dynamodb を使った DynamoDB レシピを含みます。

サーバーレス

AWS Lambda
Google Cloud Run

PORT 環境変数の読み込み、POST /echo ルート、Dockerfile を備えたコンテナ化された Hono サービス。README には @google-cloud/cloud-sql-connector を使用した Cloud SQL レシピを含みます。

コンテナ

Google Cloud Run

カテゴリ: Full-Stack

Monorepo

packages/sharedpackages/server (Hono + Drizzle)、packages/client (Vite+/React) を持つ pnpm/npm/yarn ワークスペース。型は workspace プロトコル経由で @<project>/shared から両側へ流れます。

ワークスペース 共有型

Monorepo (Hono + React)
Full-Stack

Monorepo の単一パッケージ版: 1 つの package.jsonsrc/{shared,server,client}、Hono + Drizzle バックエンド、Vite+/React クライアント、開発時は concurrently/api/* は Vite+ プロキシ。

単一パッケージ 共有型

Full-Stack (single package)
res-x (Bun 上の HTMX)

rescript-x (JSX をサーバ側でレンダリング) と HTMX によるクライアントインタラクションで構築するサーバ駆動型 Web アプリ。hx-post で増減する Counter と、zod または sury で入力を検証する Todo フォームを同梱。Bun + Vite 上で動作します。

Bun 必須 HTMX サーバ駆動

res-x (Bun 上の HTMX)

どのテンプレートを選ぶべきか?

シチュエーション

テンプレート

ReScript を初めて試したい

Basic

再利用可能な npm パッケージを書きたい

npm Library

CLI ツールを構築したい

CLI Tool

React SPA が必要

Vite+ + React

SSR / Server Components / SEO が必要

Next.js

デスクトップアプリを構築したい

Electron

モバイルアプリを構築したい

React Native

型付きドキュメントを備えた REST API が必要

Hono (REST)

GraphQL API が必要

Hono + GraphQL

Cloudflare のエッジにデプロイしたい

Cloudflare Workers

AWS Lambda にデプロイしたい

AWS Lambda

GCP にコンテナをデプロイしたい

Google Cloud Run

複数のパッケージで型を共有したい (スケールしやすい)

Monorepo

バックエンド + フロントエンドを 1 パッケージにしたい (シンプル)

Full-Stack

Bun 上で HTMX を使ったサーバレンダリング HTML を書きたい

res-x (Bun 上の HTMX)

Tip

上の表の各行は、生成されるレイアウト、依存関係、主要ファイル、npm スクリプト、2 日目以降の拡張ポインタを解説したテンプレートごとの詳細ページにリンクしています。ページ下部の toctree (または左サイドバーの "Project Templates" セクション) から目的のページに直接ジャンプできます。

2 日目のレシピ

生成したプロジェクトを拡張する必要があるとき、以下のレシピがテンプレート README の先を補完します:

Vite+ に関する注意

Vite+ ベースのテンプレート (Vite+ + React、Monorepo クライアント、Full-Stack) は vite-plus@voidzero-dev/vite-plus-core を pre-1.0 バージョンに固定しています。アップグレード後にコマンドが壊れた場合は、vite.config.mjsvite-plusvite に置き換え、vp スクリプトを vite に変更して従来の Vite にフォールバックしてください。