1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

npxで実行できるオリジナルコマンドラインツールを簡単に作ってみた!

Last updated at Posted at 2024-09-09

はじめに

Node.jsとTypeScriptを使って、npxコマンドで実行可能なコマンドラインインターフェース(CLI)ツールを作成する方法を紹介します。この記事では、プロジェクトのセットアップから、簡単なCliツールの作成までの手順をとりあえず作れることを目的にざっくり解説します。

前提条件

  • Node.js(バージョン12以上)がインストールされていること
  • npm(Node.jsに付属)がインストールされていること

手順

1. プロジェクトの初期化

まず、新しいディレクトリを作成し、プロジェクトを初期化します。

mkdir my-cli-tool
cd my-cli-tool
npm init -y

2. 必要な依存関係のインストール

TypeScriptと、コマンドライン引数を解析するためのライブラリ(例:commander)をインストールします。

npm install -D typescript @types/node
npm install commander

3. TypeScriptの設定

TypeScriptの設定ファイル(tsconfig.json)を作成します。

npx tsc --init

4. ソースコードの作成

src/index.tsファイルを作成し、CLIツールのコードを書きます。

import { Command } from 'commander';

const program = new Command();

program
  .version('1.0.0')
  .description('A CLI for managing Zenn and Qiita articles')
  .option('-d, --debug', 'output extra debugging')
  .action((options) => {
    if (options.debug) console.log(options);
    console.log('Hello from gane CLI!');
  });

program.parse(process.argv);

5. package.jsonの更新

package.jsonファイルを編集して、ビルドスクリプトとbin設定を追加します。

{
  "name": "my-cli-tool",
  "version": "1.0.0",
  "description": "A simple CLI tool",
  "main": "src/index.js",
  "bin": {
    "my-cli-tool": "src/index.js"
  },
  "scripts": {
    "build": "tsc",
    "start": "node src/index.js"
  },
  // ... その他の設定
}

6. ビルドとローカルテスト

TypeScriptをコンパイルし、ローカルでツールをリンクします。

npm run build
npm link

これで、ローカル環境で以下のようにツールを実行できるようになります:

npx my-cli-tool -f test.txt

実際の実行結果

Hello from gane CLI!

まとめ

以上の手順で、Node.jsとTypeScriptを使ってnpxで実行可能なCLIツールを作成できます。このアプローチを使えば、さまざまな用途のCLIツールを簡単に開発し、配布することができます!!!!!!

参考リンク

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?