デプロイ
Rune で作成した CLI は、通常の npm パッケージとして公開できます。Rune のスターターは dist/cli.mjs を bin エントリとして公開する構成になっているため、公開向けの設定を整えた上で rune build を実行すれば npm にアップロードできます。
このガイドでは、npm への公開に必要な最小限の手順について説明します。
package.json の確認
Section titled “package.json の確認”npm に公開する前に、少なくとも次の項目を確認してください。
name: npm 上で公開するパッケージ名version: 公開するバージョンbin: CLI の実行ファイル。スターターのデフォルトはdist/cli.mjsfiles: npm に含めるファイル。スターターのデフォルトは["dist"]type: ESM として公開するための"module"private: 生成されたプロジェクトでは自動的に削除されます。リポジトリ内のスターターを直接コピーした場合は、公開前にtrueを外してくださいengines: 対応する Node.js のバージョン
スターターの package.json のうち、公開に関係する主な項目は次のとおりです:
{ "name": "my-cli", "version": "0.0.0", "bin": { "my-cli": "dist/cli.mjs" }, "files": [ "dist" ], "type": "module", "engines": { "node": ">=22.12.0" }}実際に公開する前に、name と version を自分のパッケージ用に変更してください。create-rune-app を使わずにリポジトリ内のスターターを直接コピーした場合は、private: true を削除または false にしてください。
rune build の実行
Section titled “rune build の実行”Rune の公開用 CLI は rune build によって生成されます。npm publish の前に必ずビルドしてください。
npm run buildビルドが成功すると、dist/ 以下に次のファイルが生成されます:
dist/cli.mjs:binで指定された CLI のエントリポイントdist/manifest.json: コマンドツリーのマニフェストdist/commands/...: 各コマンドのビルド済みモジュール
依存関係の置き場所
Section titled “依存関係の置き場所”Rune をビルドすると、アプリ本体のソースは dist/ にまとめられますが、サードパーティのパッケージは通常の npm パッケージと同様に実行時に解決されます。そのため、コマンドの実行時に import されるサードパーティパッケージは dependencies に置く必要があります。
- 実行時に読み込まれるパッケージは
dependencies - 公開後の CLI 実行時に不要なパッケージは
devDependencies
たとえば、以下のようにコマンドの中で chalk を使っている場合は、dependencies に置く必要があります:
import { defineCommand } from "@rune-cli/rune";import chalk from "chalk";
export default defineCommand({ run({ output }) { output.log(chalk.green("ok")); },});一方で、vitest や typescript のように開発時だけに使うものは devDependencies のままで構いません。また、Rune のランタイムはビルド時にバンドルされるため、@rune-cli/rune も devDependencies に指定して問題ありません。
npm pack による公開内容の確認
Section titled “npm pack による公開内容の確認”パッケージをすぐに npm publish する前に、まず npm pack で公開される tarball を確認しておくと安全です。
npm packこれにより、実際に npm に送られる内容をローカルで確認できます。特に次の点を見ておきましょう:
dist/が含まれていること- 不要なソースファイルやテストが含まれていないこと
binがdist/cli.mjsを指していること
npm への公開
Section titled “npm への公開”準備ができたら、npm にログインして公開します。
npm loginnpm publishスコープ付きパッケージ(例: @your-org/my-cli)を公開する場合で、公開範囲を public にしたいときは --access public を付けてください。詳しくは npm のスコープ付き公開パッケージのドキュメント を参照してください。
npm publish --access public公開後は次のように実行できます。
npx my-cli helloまたは、グローバルにインストールした上で通常のコマンドとして実行できます。
npm install -g my-climy-cli helloよくある失敗
Section titled “よくある失敗”- リポジトリ内のスターターを直接コピーした結果、
private: trueのままで publish している rune buildを実行せずに publish している- 実行時依存を
devDependenciesに入れている - スコープ付きパッケージなのに
npm publish --access publicを付けていない
公開後に Cannot find package ... のようなエラーが出る場合は、そのパッケージが dependencies に入っているかをまず確認してください。