Basic¶
Node.js Validation
動作する最小限の ReScript + Node.js スターターである。「Hello World」ではない — Console.log に加えて、argv のパース、node:fs/promises 経由のファイル I/O、そしてウィザードで選択した zod または sury を使った Validation.res による同梱の config.sample.json のバリデーションを示している。
プラグインが生成する最小限の scaffolding を正確に理解したい場合、あるいはその場限りで終わりかねない小さな Node.js スクリプトの出発点として、本テンプレートを参照すると良い。
生成内容¶
my-project/
├── rescript.json
├── package.json
├── config.sample.json
├── src/
│ ├── App.res # entry — parses argv, optionally reads & validates config
│ ├── Args.res # tiny argv parser (--flag / --flag=value / positional)
│ ├── Files.res # fs/promises helpers (readFile / writeFile / exists)
│ ├── Validation.res # zod or sury — selected in the wizard
│ └── __tests__/App.test.mjs # vitest smoke test that imports App.res.mjs
├── README.md # script docs + Project Layout + Run the App
├── LICENSE # MIT, holder = project name
├── .nvmrc # Node 24
├── .gitignore # node_modules + ReScript build artifacts
├── .editorconfig # 2-space indent, LF line endings
└── .github/
├── dependabot.yml # weekly npm updates
└── workflows/ci.yml # install + rescript build + vitest
ウィザードオプション¶
オプション |
効果 |
|---|---|
Project name |
npm の |
Package manager |
npm / pnpm / yarn / bun。 |
Validation library |
|
主要な依存¶
パッケージ |
用途 |
バージョン |
|---|---|---|
|
ReScript コンパイラ |
|
|
標準ライブラリ |
|
|
コンパイル後の |
|
|
バリデーションのバックエンド(ウィザードで選択) |
|
|
スモークテストランナー |
|
|
|
|
主要なファイル¶
src/App.res¶
npm start から呼び出されるエントリポイント。Args.parse(NodeJs.Process.process->NodeJs.Process.argv) を呼び出し、挨拶を表示するか、(--config <path> が指定された場合は)Files.readFile でファイルを読み込み、Validation.parseConfig 経由でパースする。
src/Args.res / src/Files.res¶
CLI フレームワークを引き込まずに 実用的な API を示すために用意された 2 つの小さなモジュール:
Args.res—--flag/--flag=value/ 位置引数を扱う最小限のパーサーFiles.res—node:fs/promisesをラップするreadFile、writeFile、existsのラッパー
いずれも意図的に短くしてある — @module / @val バインディングで Node API を ラップする方法の実例も兼ねている。
src/Validation.res¶
同梱の config.sample.json 用の parseConfig: Js.Json.t => result<config, string>。シグネチャは zod 版と sury 版で同一なので、呼び出し側で分岐する必要はない。
config.sample.json¶
バリデータを実際に動かすためのリファレンス設定:
{
"name": "demo",
"version": 1,
"tags": ["alpha", "beta"]
}
npm スクリプト¶
スクリプト |
説明 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
2日目以降のレシピ¶
このテンプレートは意図的に低レベル寄りで、拡張すべきフレームワークは存在しない。よくある次のステップ:
CLI サブコマンドを追加 → CLI Tool テンプレートへ移行する(または
Commands/パターンを複製する)HTTP を追加 → Hono (Node.js) へ移行する
npm に公開 → npm Library へ移行する
プロジェクトを開いた後の ReScript 側のエディタワークフローについては、機能概要 を参照すること。
補足¶
nodeエンジンは>=24に固定されており、.nvmrcには24が記載されている。これより古いメジャーバージョンは CI で検証されない。スモークテストは
import("../App.res.mjs")が解決できることだけを確認するもので、Files.resやValidation.resまでは検証しない。プロジェクトを育てる過程でドメイン固有のテストを追加すること。config.sample.jsonというファイル名は意図的なものである:.gitignoreが(実運用の、場合によっては秘匿される)config.jsonをリポジトリから除外しつつ、サンプル はソースとともに配布できるようにしている。