Skip to content

Latest commit

 

History

History
208 lines (140 loc) · 7.11 KB

File metadata and controls

208 lines (140 loc) · 7.11 KB

English | 日本語

scriptup

Release License: MIT Node.js

Minecraft Bedrock ScriptAPI 開発向けの CLI です。

scriptup は、@minecraft/* の更新、ScriptAPI での外部ライブラリ利用、そして ScriptAPI 用ライブラリ作成の初期構築を素早く行えるようにします。

モチベーション

  • @minecraft/* の更新を容易にする
  • ScriptAPI で簡単に外部ライブラリを使えるようにする
  • ScriptAPI 用のライブラリを簡単に作れるようにする

主な機能

  • manifest.json の ScriptAPI 依存バージョン更新と、対応 npm パッケージのインストール
  • development_behavior_packs 直下への新規プロジェクト作成
  • 現在のディレクトリを ScriptAPI プロジェクトとして初期化
  • 既存プロジェクトを最新のテンプレートへ移行
  • manifest.json の script entry を出力先として tsdown ビルド
  • 再利用可能ライブラリ作成向けのローカル雛形生成
  • パッケージマネージャーのインタラクティブ選択(packageManager フィールドと mcpack.yml を自動設定)

動作要件

  • Node.js 18 以上
  • アドオンを試すための Minecraft Bedrock 実行環境
  • npm, pnpm, yarn, bun のいずれか

インストール

好みのパッケージマネージャーで global インストールしてください。

npm i -g @nano191225/scriptup
pnpm add -g @nano191225/scriptup

導入後は scriptup(または sup)で実行できます。

クイックスタート

最新 stable の ScriptAPI モジュールへ更新

scriptup stable

新規プロジェクト作成

scriptup new my-pack --open

ビルド

scriptup build

コマンド

scriptup stable

最新の stable な Minecraft バージョンに一致するモジュールをインストールします。

scriptup preview

最新の preview な Minecraft バージョンに一致するモジュールをインストールします。

scriptup lts

LTS 相当(stable/preview/beta/internal 以外を優先)のモジュールをインストールします。見つからない場合は stable 相当にフォールバックします。

scriptup

手動バージョン検索モードです。

例:

scriptup 1.21.60
scriptup 2.0.0-beta

scriptup init

現在のディレクトリを ScriptAPI プロジェクトとして初期化します。

オプション:

  • --lib: package/ 配下にローカルライブラリ雛形を含める
  • --no-workflow: GitHub Actions workflow を生成しない
  • -i, --interactive: パッケージマネージャーをインタラクティブに選択(packageManager フィールドへの書き込みと mcpack.yml の設定も行う)
  • -m, --migrate: 既存プロジェクトを最新のスキャフォールドテンプレートへ移行する

実行内容:

  • 主要ファイルを生成(manifest.json, tsconfig.json, src/main.ts など)
  • tsdown.config.ts がなければ作成
  • package.json scripts を更新
    • build: scriptup build --release
    • watch: scriptup build --watch
  • 必要な devDependencies をインストール

移行モード (--migrate)

既存プロジェクトを最新のスキャフォールドで再構築しながら、ユーザーのカスタマイズを保持します。

スキャフォールド前に既存のテンプレートファイルを .backup/ へバックアップします。スキャフォールド後:

  • manifest.json: UUID・name・version を旧ファイルから引き継ぎます。配列形式のバージョン([x, y, z])は自動的に "x.y.z" 文字列へ変換されます。generated_with フィールドは新テンプレートの値に更新されます。
  • package.json: name・version・packageManager・依存関係・scripts がマージされます(旧値を優先し、新テンプレートで不足を補完)。
  • その他のテンプレートファイル(.gitignore, README.md など): バックアップから元の内容で復元されます。
  • launch.json と tsconfig.json: 常に最新テンプレートで上書きされます。

scriptup new

新しい ScriptAPI プロジェクトを作成します。

オプション:

  • -o, --open [command]: 作成後にエディタで開く(既定値: code)
  • -p, --preview: Minecraft Bedrock Preview の behavior packs ディレクトリを使う
  • -d, --dir : 指定ディレクトリ配下に作成
  • --lib: package/ 配下にローカルライブラリ雛形を含める
  • --no-link: --dir 使用時の behavior packs へのリンク作成を無効化
  • --no-workflow: GitHub Actions workflow を生成しない
  • -i, --interactive: パッケージマネージャーをインタラクティブに選択(packageManager フィールドへの書き込みと mcpack.yml の設定も行う)

既定の作成先:

  • Windows stable:
    • %APPDATA%/Minecraft Bedrock/Users/Shared/games/com.mojang/development_behavior_packs
  • Windows preview:
    • %APPDATA%/Minecraft Bedrock Preview/Users/Shared/games/com.mojang/development_behavior_packs
  • Linux (mcpelauncher):
    • ${XDG_DATA_HOME:-~/.local/share}/mcpelauncher/games/com.mojang/development_behavior_packs

scriptup build

tsdown で現在の ScriptAPI プロジェクトをビルドします。

オプション:

  • -b, --bundle: 強制的にバンドル出力
  • -w, --watch: 監視モード
  • -r, --release: リリースビルド(圧縮有効、sourcemap 無効)

ビルド挙動の要点:

  • 出力先は manifest.json の script module entry から決定(例: scripts/main.js)
  • 入力エントリの優先順位
    • src/main.ts
    • src/index.ts
    • tsdown.config.ts の entry
  • release モードでは package/ が存在する場合に package/**/*.ts も dist/ へ追加ビルド
  • 許可されない外部 import(許可対象の @minecraft/* 以外)が出力に残っている場合、原因候補パッケージ名と残存依存名の両方を警告表示

典型的な使い方

既存プロジェクト

scriptup init
scriptup stable
scriptup build

既存プロジェクトを最新テンプレートへ移行

scriptup init --migrate --interactive
scriptup stable
scriptup build

新規アドオン

scriptup new my-addon --open
cd my-addon
scriptup build --watch

ライブラリ前提の新規プロジェクト

scriptup new @yourname/your-lib --lib --dir . --open

補足

  • manifest.json の依存更新と devDependencies のインストールをあわせて実行します
  • packageManager フィールドまたは lockfile からパッケージマネージャーを自動判定します
  • エイリアスとして sup も使えます

ライセンス

MIT