ReScript の基本¶
ReScript を初めて使う方向けに、プロジェクトのセットアップと基本的な使い方を説明します。
Tip
ReScript の包括的なドキュメントについては、公式の ReScript docs を参照してください。
新規プロジェクトのセットアップ¶
方法 1: プロジェクトウィザードを使用する¶
File → New → Project を選択します
ジェネレーター一覧から ReScript を選択します
プロジェクト名と保存場所を入力します
Create をクリックします
ウィザードにより、rescript.json とソースファイルを含む基本的なプロジェクト構造が生成されます。
方法 2: 手動セットアップ¶
プロジェクト用の新しいディレクトリを作成します
npm で初期化します:
mkdir my-rescript-project
cd my-rescript-project
npm init -y
ReScript をインストールします:
npm install rescript @rescript/core
Language Server をインストールします:
npm install @rescript/language-server
rescript.jsonを作成します:
{
"name": "my-rescript-project",
"sources": [
{ "dir": "src", "subdirs": true }
],
"package-specs": [
{ "module": "esmodule", "in-source": true }
],
"bs-dependencies": ["@rescript/core"]
}
src/ディレクトリと最初の.resファイルを作成します:
mkdir src
// src/Main.res
let greeting = "Hello from ReScript!"
Console.log(greeting)
ビルドします:
npx rescript build
プロジェクト構成¶
一般的な ReScript プロジェクトの構成は以下のとおりです:
my-project/
├── rescript.json # ReScript configuration
├── package.json # npm dependencies
├── node_modules/
│ ├── rescript/ # ReScript compiler
│ └── @rescript/
│ ├── core/ # Standard library
│ └── language-server/ # LSP server
├── src/
│ ├── Main.res # Source files
│ └── Utils.res
└── lib/ # Compiled output (auto-generated)
主要なファイル¶
rescript.json¶
ReScript プロジェクトのメイン設定ファイルです。プラグインはこのファイルに対して JSON Schema のバリデーションと自動補完を提供します。
主要なフィールド:
name--- パッケージ名sources--- コンパイル対象のソースディレクトリbs-dependencies--- ReScript パッケージの依存関係package-specs--- 出力形式(commonjs または esmodule)
.res ファイル¶
ReScript のソースファイルです。各 .res ファイルは、ファイル名と同じ名前のモジュールを定義します。
.resi ファイル¶
ReScript のインターフェースファイルです。対応する .res モジュールの公開 API を定義します。Alt+O で .res ファイルと .resi ファイルを切り替えられます。
基本構文クイックリファレンス¶
// Variables
let name = "ReScript"
let age = 25
let isReady = true
// Functions
let add = (a, b) => a + b
let greet = (name) => `Hello, ${name}!`
// Types
type color = Red | Green | Blue
type user = {name: string, age: int}
// Pattern matching
let describe = (color) =>
switch color {
| Red => "red"
| Green => "green"
| Blue => "blue"
}
// Modules
module Math = {
let pi = 3.14159
let square = (x) => x *. x
}
// Pipe operator
let result = [1, 2, 3]->Array.map(x => x * 2)->Array.filter(x => x > 2)