Nitpicker へのコントリビューションを歓迎します。
# リポジトリをクローン
git clone https://github.com/d-zero-dev/nitpicker.git
cd nitpicker
# 依存関係をインストール(Yarn のみ使用、npm 厳禁)
corepack enable
yarn install --immutable
# 全パッケージをビルド
yarn build
# テスト実行
yarn test- Node.js 24 以上(Volta でバージョン管理推奨)
- Yarn 4.x(
corepack enableで自動有効化) - npm は使用しない: すべてのコマンドは
yarn経由で実行
mainブランチから feature ブランチを作成- ブランチ名:
feat/機能名,fix/バグ名,docs/ドキュメント名
- パッケージディレクトリに
cdしない: 常にリポジトリルートからコマンドを実行 - ビルドは
yarn buildのみ:npx tsc,yarn tsc等は禁止 - 対象を限定した操作: ビルド検証は
yarn buildで全パッケージ一括実行
# 全パッケージビルド
yarn build
# ユニットテスト
yarn test
# E2E テスト
yarn vitest run --config vitest.e2e.config.ts
# lint
yarn lint:checkConventional Commits に準拠:
feat(crawler): add retry logic for failed requests
fix(core): prevent analyze results from being silently empty
docs: update README with new CLI options
.commitlintrc で設定されていますが、現在 Git フックには組み込まれていません。CI やレビュー時にコミットメッセージを確認してください。
- 1ファイル1エクスポート: エクスポートする関数/クラスは1つのみ
index.ts禁止: モジュールの公開はpackage.jsonのexportsフィールドで行う- 型は
types.tsに集約: ドメインごとに専用types.tsを作成
- JSDoc 必須: すべての公開関数、クラス、interface、type に JSDoc を記述
interface優先:typeはユニオン型・交差型などtypeでしか定義できない場合のみ- パラメータ3つ以上: 名前付きオブジェクトにまとめる
- Vitest 4:
import { describe, it, expect } from 'vitest'を明示的に記述
- 1関数1ファイルにはユニットテスト必須
- テストファーストを推奨: バグ修正や明確な仕様の機能追加では、実装より先にテスト
console.logを使わない(deal()が進捗表示を担当)definePlugin()でプラグインを定義eachPage/eachUrlコールバックでページ単位の分析を実装
- マイナーバージョン(0.x.y → 0.x.z): 後方互換性を維持する。既存の公開 API、CLI オプション、アーカイブフォーマットを壊さない
- メジャーバージョン(0.x → 1.0 等): 破壊的変更を許容する。ただしマイグレーションガイドが必須
- マイグレーションガイドの要件:
- 影響を受ける API・設定・データ構造の一覧
- before → after の具体的な書き換え例
- 段階的な移行手順(一括移行が困難な場合の中間状態を含む)
- 非推奨化: 削除予定バージョンと移行先を JSDoc
@deprecatedタグに明記する
- 変更の目的を明確に記述
- テストを追加・更新
yarn build && yarn test && yarn lint:checkがパスすることを確認- 破壊的変更にはマイグレーションガイドを同梱(ガイドなし = マージ不可)
詳細は ARCHITECTURE.md を参照。
| パッケージ | 用途 | 参照 |
|---|---|---|
@d-zero/beholder |
Puppeteer ベースのスクレイパー | npm: @d-zero/beholder |
@d-zero/dealer |
並列処理・スケジューリング | npm: @d-zero/dealer |
@d-zero/shared |
共有ユーティリティ(サブパスエクスポート形式) | npm: @d-zero/shared |
@d-zero/roar |
CLI フレームワーク | npm: @d-zero/roar |
@d-zero/google-auth |
OAuth2 認証 | npm: @d-zero/google-auth |
@d-zero/google-sheets |
Google Sheets API クライアント | npm: @d-zero/google-sheets |
Apache 2.0 — 詳細は LICENSE を参照。