実践: CLIツール作成
ファイル整理ツールをNode.jsで作る
作るもの
ダウンロードフォルダなどの散らかったファイルを、拡張子別に自動整理するCLIツールを作ります。
# 使用例
$ organize ~/Downloads Organizing files in /Users/you/Downloads... 📁 Created: images/ (23 files) 📁 Created: documents/ (15 files) 📁 Created: videos/ (5 files) 📁 Created: archives/ (8 files) ✅ Done! Organized 51 files.
1 プロジェクト初期化
# Claude Codeへの指示
"Node.js + TypeScriptでCLIツールを作成して。
名前: file-organizer
ビルドツール: tsup
CLI引数パーサー: commander
package.jsonのbinフィールドも設定して。"
2 基本ロジック実装
# メイン機能
"ファイル整理のメインロジックを実装して。
機能:
- 指定ディレクトリのファイルをスキャン
- 拡張子別にフォルダを作成(images, documents, videos, audio, archives, others)
- ファイルを適切なフォルダに移動
- 進捗をコンソールに表示
src/organizer.tsに実装。"
3 CLI インターフェース
# CLI実装
"commanderを使ってCLIを実装して。
コマンド: organize <directory>
オプション:
- --dry-run: 実際には移動せずプレビュー
- --config <file>: カスタム設定ファイル
- --verbose: 詳細ログ
src/cli.tsに実装。"
4 設定ファイル対応
# カスタマイズ機能
"JSON設定ファイル対応を追加して。
設定内容:
- カテゴリ名のカスタマイズ
- 拡張子とカテゴリのマッピング追加/変更
- 除外パターン
デフォルト設定も用意して。"
設定ファイル例:
{
"categories": {
"images": ["jpg", "png", "gif", "webp"],
"documents": ["pdf", "doc", "docx", "txt"],
"code": ["js", "ts", "py", "go"]
},
"exclude": ["*.tmp", ".DS_Store"]
}5 仕上げ
# 完成させる
"以下を追加して完成させて:
- エラーハンドリング(権限エラー、存在しないディレクトリ等)
- カラー出力(chalk使用)
- npm link でグローバルインストールできるように
- README.mdも作成"
応用アイデア
日付別整理
ファイルの作成日/更新日で年月フォルダに振り分け
重複検出
ハッシュ値で重複ファイルを検出・削除
監視モード
フォルダを監視して自動整理(chokidar使用)
Undo機能
移動履歴を保存して元に戻せるように