Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

開発環境のセットアップ

laurus-nodejs バインディングのローカル開発環境の構築、 ビルド、テスト実行について説明します。

前提条件

  • Rust 1.85 以降(Cargo 含む)
  • Node.js 18 以降(npm 含む)
  • リポジトリがローカルにクローン済み
git clone https://github.com/mosuka/laurus.git
cd laurus

ビルド

開発ビルド

デバッグモードで Rust ネイティブアドオンをコンパイルします。 Rust ソースを変更した後は再実行してください。

cd laurus-nodejs
npm install
npm run build:debug

リリースビルド

npm run build

ビルドの確認

node -e "
const { Index } = require('./index.js');
Index.create().then(idx => console.log(idx.stats()));
"
// { documentCount: 0, vectorFields: {} }

テスト

テストには Vitest を使用し、 __tests__/ に配置されています。

# 全テスト実行
npm test

特定のテストを名前で実行:

npx vitest run -t "searches with DSL string"

リントとフォーマット

# Rust リント(Clippy)
cargo clippy -p laurus-nodejs -- -D warnings

# Rust フォーマットチェック
cargo fmt -p laurus-nodejs --check

# フォーマット適用
cargo fmt -p laurus-nodejs

クリーンアップ

# ビルド成果物の削除
rm -f *.node index.js index.d.ts

# node_modules の削除
rm -rf node_modules

プロジェクト構成

laurus-nodejs/
├── Cargo.toml          # Rust クレートマニフェスト
├── build.rs            # napi-build セットアップ
├── package.json        # npm パッケージメタデータ
├── README.md           # 英語 README
├── README_ja.md        # 日本語 README
├── src/                # Rust ソース(napi-rs バインディング)
│   ├── lib.rs          # モジュール登録
│   ├── index.rs        # Index クラス
│   ├── schema.rs       # Schema クラス
│   ├── query.rs        # Query クラス群
│   ├── search.rs       # SearchRequest / SearchResult / Fusion
│   ├── analysis.rs     # Tokenizer / Filter / Token
│   ├── convert.rs      # JS ↔ DataValue 変換
│   └── errors.rs       # エラーマッピング
├── __tests__/          # Vitest 統合テスト
│   └── index.spec.mjs
└── examples/           # 実行可能な Node.js サンプル
    ├── quickstart.mjs
    ├── lexical-search.mjs
    ├── vector-search.mjs
    └── hybrid-search.mjs