@bedrockkit/cli 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +27 -25
- package/README.md +27 -25
- package/dist/cli.js +48 -7
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.js +187 -39
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/bump.js +4 -4
- package/dist/commands/bump.js.map +1 -1
- package/dist/commands/deps.js +7 -7
- package/dist/commands/deps.js.map +1 -1
- package/dist/commands/import.js +56 -22
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/index.js +13 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.js +30 -25
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/link.js +337 -0
- package/dist/commands/link.js.map +1 -0
- package/dist/commands/package.js +22 -15
- package/dist/commands/package.js.map +1 -1
- package/dist/commands/remove.js +165 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/setting.js +13 -106
- package/dist/commands/setting.js.map +1 -1
- package/dist/commands/sync.js +24 -14
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/template.js +35 -19
- package/dist/commands/template.js.map +1 -1
- package/dist/commands/validate.js +47 -38
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/watch.js +422 -28
- package/dist/commands/watch.js.map +1 -1
- package/dist/core/manifest.js +1 -1
- package/dist/core/manifest.js.map +1 -1
- package/dist/help.js +17 -16
- package/dist/help.js.map +1 -1
- package/dist/utils/i18n.js +760 -24
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/settings.js +1 -1
- package/dist/utils/settings.js.map +1 -1
- package/dist/utils/tooling.js +12 -10
- package/dist/utils/tooling.js.map +1 -1
- package/dist/utils/ui.js +3 -2
- package/dist/utils/ui.js.map +1 -1
- package/dist/utils/update.js +37 -0
- package/dist/utils/update.js.map +1 -0
- package/package.json +58 -58
package/README.en.md
CHANGED
|
@@ -12,19 +12,19 @@ A CLI tool for all-in-one Minecraft Bedrock Edition addon/resource pack developm
|
|
|
12
12
|
## Installation
|
|
13
13
|
Install globally from GitHub:
|
|
14
14
|
|
|
15
|
-
```bash
|
|
16
|
-
npm i -g @bedrockkit/cli
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
If you want to use a local clone:
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
git clone https://github.com/kaaariyaaa/BedrockKit.git
|
|
23
|
-
cd BedrockKit
|
|
24
|
-
npm install
|
|
25
|
-
npm run build
|
|
26
|
-
npm install -g . # or "npm link" for local linking
|
|
27
|
-
```
|
|
15
|
+
```bash
|
|
16
|
+
npm i -g @bedrockkit/cli
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
If you want to use a local clone:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
git clone https://github.com/kaaariyaaa/BedrockKit.git
|
|
23
|
+
cd BedrockKit
|
|
24
|
+
npm install
|
|
25
|
+
npm run build
|
|
26
|
+
npm install -g . # or "npm link" for local linking
|
|
27
|
+
```
|
|
28
28
|
|
|
29
29
|
For direct testing from source during development, you can run `src/cli.ts` using `npm run dev -- <command>`.
|
|
30
30
|
|
|
@@ -83,18 +83,20 @@ Minimal example of `bkit.config.json`:
|
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
## Main Commands
|
|
86
|
-
- `bkit init` (`new`)
|
|
87
|
-
- `bkit import <mcpack|mcaddon|zip>`
|
|
88
|
-
- `bkit build [--out-dir <dir>]`
|
|
89
|
-
- `bkit package [--out <name>]`
|
|
90
|
-
- `bkit sync [--target <name>] [--build=false]`
|
|
91
|
-
- `bkit
|
|
92
|
-
- `bkit
|
|
93
|
-
- `bkit
|
|
94
|
-
- `bkit
|
|
95
|
-
- `bkit
|
|
96
|
-
- `bkit
|
|
97
|
-
- `
|
|
86
|
+
- `bkit init` (`new`) : Create a workspace from a template. You can interactively select Script API packages and versions. ESLint rules can be toggled interactively or via `--eslint-rules <csv>` / `--no-eslint` flags.
|
|
87
|
+
- `bkit import <mcpack|mcaddon|zip>` : Extract an existing archive and generate `bkit.config.json` for workspace conversion. JS to TS conversion is optional (`--convert-ts`). Automatic conversion is recommended only when necessary due to compatibility risks.
|
|
88
|
+
- `bkit build [--out-dir <dir>]` : Copy packs to `dist/`. If scripts are in TypeScript, they are bundled using `@minecraft/core-build-tasks`.
|
|
89
|
+
- `bkit package [--out <name>]` : Create `.mcpack` (both packs) or `.mcaddon` (if both exist) from the `dist/` folder.
|
|
90
|
+
- `bkit sync [--target <name>] [--build=false]` : Copy build outputs to locations defined in `config.sync.targets`. Specifying `product` allows deployment to Minecraft development environments.
|
|
91
|
+
- `bkit link [create|remove|edit]` : Create/remove/recreate symlinks in development folders. Supports `--source dist|packs`, `--mode symlink|junction`, and `--behavior/--resource`. If `dist` is missing it triggers a build.
|
|
92
|
+
- `bkit deps` : Install selected Script API dependencies via npm and sync `bkit.config.json` and `manifest.json`.
|
|
93
|
+
- `bkit bump [major|minor|patch] [--to <version>] [--min-engine <x.y.z>]` : Update project/manifest versions (optionally override min_engine_version).
|
|
94
|
+
- `bkit validate [--strict] [--json]` : Check consistency between config and manifest files.
|
|
95
|
+
- `bkit template <list|add|pull|rm>` : Manage the template registry (`.bkit/templates*.json`). Any repository can be registered as `custom-git`.
|
|
96
|
+
- `bkit watch` : Watch the project folder and automatically perform build and sync on changes. Link mode shares non-script assets via symlink and copies built JS into `scripts`.
|
|
97
|
+
- `bkit setting [--lang <ja|en>] [--project-root <path>]` : Manage CLI settings (language, project root). Prompts when no flags are provided.
|
|
98
|
+
- `bkit remove [--project <name>]` : Remove a project folder (use `--yes` to skip confirmation). Use `bkit link remove` to unlink dev folders.
|
|
99
|
+
- `npm run build:local` / `npm run package:local` : Each generated/imported project ships with `tools/local-build.mjs` and `tools/local-package.mjs`. You can build and create `.mcpack/.mcaddon` archives without the BedrockKit CLI.
|
|
98
100
|
|
|
99
101
|
## Sync Targets
|
|
100
102
|
- **Via core-build-tasks** (Deploy to dev Minecraft)
|
package/README.md
CHANGED
|
@@ -12,19 +12,19 @@ Minecraft Bedrock Edition 向けのアドオン/リソースパック開発を
|
|
|
12
12
|
## インストール
|
|
13
13
|
GitHub からグローバルにインストールできます。
|
|
14
14
|
|
|
15
|
-
```bash
|
|
16
|
-
npm i -g @bedrockkit/cli
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
リポジトリをクローンして使う場合は次のとおりです。
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
git clone https://github.com/kaaariyaaa/BedrockKit.git
|
|
23
|
-
cd BedrockKit
|
|
24
|
-
npm install
|
|
25
|
-
npm run build
|
|
26
|
-
npm install -g . # もしくは npm link でローカルリンク
|
|
27
|
-
```
|
|
15
|
+
```bash
|
|
16
|
+
npm i -g @bedrockkit/cli
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
リポジトリをクローンして使う場合は次のとおりです。
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
git clone https://github.com/kaaariyaaa/BedrockKit.git
|
|
23
|
+
cd BedrockKit
|
|
24
|
+
npm install
|
|
25
|
+
npm run build
|
|
26
|
+
npm install -g . # もしくは npm link でローカルリンク
|
|
27
|
+
```
|
|
28
28
|
|
|
29
29
|
開発中にソースから直接試す場合は `npm run dev -- <command>` で `src/cli.ts` を起動できます。
|
|
30
30
|
|
|
@@ -83,18 +83,20 @@ project/<addon-name>/
|
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
## 主なコマンド
|
|
86
|
-
- `bkit init` (`new`)
|
|
87
|
-
- `bkit import <mcpack|mcaddon|zip>`
|
|
88
|
-
- `bkit build [--out-dir <dir>]`
|
|
89
|
-
- `bkit package [--out <name>]`
|
|
90
|
-
- `bkit sync [--target <name>] [--build=false]`
|
|
91
|
-
- `bkit
|
|
92
|
-
- `bkit
|
|
93
|
-
- `bkit
|
|
94
|
-
- `bkit
|
|
95
|
-
- `bkit
|
|
96
|
-
- `bkit
|
|
97
|
-
- `
|
|
86
|
+
- `bkit init` (`new`) : テンプレートからワークスペースを作成。スクリプト API のパッケージとバージョンも対話的に選択可能。ESLint ルールは有効/無効を対話選択でき、フラグ `--eslint-rules <csv>` / `--no-eslint` でも指定可能。
|
|
87
|
+
- `bkit import <mcpack|mcaddon|zip>` : 既存アーカイブを展開し、`bkit.config.json` を生成してワークスペース化。JS→TS 変換はオプション(`--convert-ts`)。自動変換は互換性リスクがあるため、必要な場合のみ利用を推奨します。
|
|
88
|
+
- `bkit build [--out-dir <dir>]` : ビヘイビア/リソースパックを `dist/` にコピー。スクリプトが TypeScript の場合は `@minecraft/core-build-tasks` でバンドルを実行。
|
|
89
|
+
- `bkit package [--out <name>]` : `dist/` 以下から `.mcpack`(両パック)、両方揃っていれば `.mcaddon` も作成。
|
|
90
|
+
- `bkit sync [--target <name>] [--build=false]` : ビルド成果物を `config.sync.targets` で指定した場所へコピー。`product` 指定で Minecraft 開発環境へデプロイ。
|
|
91
|
+
- `bkit link [create|remove|edit]` : 開発フォルダへシンボリックリンクを作成/解除/再作成。`--source dist|packs`、`--mode symlink|junction`、`--behavior/--resource` に対応。`dist` が無い場合は自動でビルド。
|
|
92
|
+
- `bkit deps` : 選択した Script API 依存を npm にインストールし、`bkit.config.json` と `manifest.json` を同期。
|
|
93
|
+
- `bkit bump [major|minor|patch] [--to <version>] [--min-engine <x.y.z>]` : プロジェクト/マニフェストのバージョンを更新(任意で min_engine_version も上書き)。
|
|
94
|
+
- `bkit validate [--strict] [--json]` : config / manifest の整合性チェック。
|
|
95
|
+
- `bkit template <list|add|pull|rm>` : テンプレートレジストリ(`.bkit/templates*.json`)の管理。`custom-git` で任意のリポジトリを登録可能。
|
|
96
|
+
- `bkit watch` : `./project/<name>` 配下を監視し、変更ごとにビルドと同期を自動実行。`link` モードは非スクリプトをリンク共有し、TS は JS にビルドして `scripts` だけコピー。
|
|
97
|
+
- `bkit setting [--lang <ja|en>] [--project-root <path>]` : CLI 設定を変更(言語/プロジェクト保存先)。フラグ未指定時は対話で選択。
|
|
98
|
+
- `bkit remove [--project <name>]` : プロジェクトフォルダを削除(`--yes` で確認スキップ)。リンク解除は `bkit link remove` を使用。
|
|
99
|
+
- `npm run build:local` / `npm run package:local` : 生成/インポートされた各プロジェクトには `tools/local-build.mjs` と `tools/local-package.mjs` を同梱。BedrockKit CLI がなくても、プロジェクト単体でビルド&.mcpack/.mcaddon パッケージ化が可能です。
|
|
98
100
|
|
|
99
101
|
## 同期ターゲットの書き方
|
|
100
102
|
- **core-build-tasks 経由**(開発版 Minecraft へデプロイ)
|
package/dist/cli.js
CHANGED
|
@@ -8,7 +8,9 @@ import { buildCommands } from "./commands/index.js";
|
|
|
8
8
|
import { printBanner, printCommandHeader } from "./utils/ui.js";
|
|
9
9
|
import { printHelp } from "./help.js";
|
|
10
10
|
import { resolveLang, t } from "./utils/i18n.js";
|
|
11
|
-
import { ensureSettings, loadSettings } from "./utils/settings.js";
|
|
11
|
+
import { ensureSettings, loadSettings, saveSettings } from "./utils/settings.js";
|
|
12
|
+
import { checkForUpdate } from "./utils/update.js";
|
|
13
|
+
import { spawn } from "node:child_process";
|
|
12
14
|
const __filename = fileURLToPath(import.meta.url);
|
|
13
15
|
const __dirname = dirname(__filename);
|
|
14
16
|
const root = resolve(__dirname, "..");
|
|
@@ -46,8 +48,8 @@ function stripLang(argv) {
|
|
|
46
48
|
return { args, langInput };
|
|
47
49
|
}
|
|
48
50
|
async function runInteractive(commands, lang) {
|
|
49
|
-
printBanner();
|
|
50
|
-
intro(pc.inverse("
|
|
51
|
+
printBanner(lang);
|
|
52
|
+
intro(pc.inverse(t("cli.interactiveMode", lang)));
|
|
51
53
|
const choice = await select({
|
|
52
54
|
message: t("cli.menuPrompt", lang),
|
|
53
55
|
options: commands
|
|
@@ -83,16 +85,55 @@ async function main() {
|
|
|
83
85
|
return;
|
|
84
86
|
}
|
|
85
87
|
const lang = resolveLang(langFlag, settings.lang?.value);
|
|
88
|
+
// Update check (prompt only when TTY)
|
|
89
|
+
const pkgName = pkg.name ?? "@bedrockkit/cli";
|
|
90
|
+
if (process.stdout.isTTY) {
|
|
91
|
+
const update = await checkForUpdate(pkgName, pkg.version ?? "0.0.0", settings.update?.skipVersion);
|
|
92
|
+
if (update?.shouldPrompt) {
|
|
93
|
+
const choice = await select({
|
|
94
|
+
message: `${t("update.available", lang, { current: pkg.version ?? "0.0.0", latest: update.latest })}\n${t("update.choice", lang)}`,
|
|
95
|
+
options: [
|
|
96
|
+
{ value: "now", label: t("update.now", lang) },
|
|
97
|
+
{ value: "later", label: t("update.later", lang) },
|
|
98
|
+
{ value: "skip", label: t("update.skip", lang) },
|
|
99
|
+
],
|
|
100
|
+
initialValue: "later",
|
|
101
|
+
});
|
|
102
|
+
if (!isCancel(choice)) {
|
|
103
|
+
if (choice === "skip") {
|
|
104
|
+
settings.update = { skipVersion: update.latest };
|
|
105
|
+
await saveSettings(settings);
|
|
106
|
+
}
|
|
107
|
+
else if (choice === "now") {
|
|
108
|
+
console.log(t("update.running", lang));
|
|
109
|
+
try {
|
|
110
|
+
await new Promise((resolvePromise, reject) => {
|
|
111
|
+
const child = spawn("npm", ["i", "-g", pkgName], {
|
|
112
|
+
stdio: "inherit",
|
|
113
|
+
shell: true,
|
|
114
|
+
});
|
|
115
|
+
child.on("error", reject);
|
|
116
|
+
child.on("exit", (code) => code === 0 ? resolvePromise() : reject(new Error(`npm exited ${code}`)));
|
|
117
|
+
});
|
|
118
|
+
console.log(t("update.done", lang));
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
console.error(t("update.failed", lang));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
86
127
|
const interactiveFlag = argvNoLang.includes("--interactive") || argvNoLang.includes("-i");
|
|
87
128
|
const argv = argvNoLang.filter((arg) => arg !== "--interactive" && arg !== "-i");
|
|
88
129
|
const [first, ...rest] = argv;
|
|
89
|
-
const commands = buildCommands(lang, () => printHelp(commands));
|
|
130
|
+
const commands = buildCommands(lang, () => printHelp(commands, lang));
|
|
90
131
|
if (interactiveFlag || !first) {
|
|
91
132
|
await runInteractive(commands, lang);
|
|
92
133
|
return;
|
|
93
134
|
}
|
|
94
135
|
if (first === "-h" || first === "--help") {
|
|
95
|
-
printHelp(commands);
|
|
136
|
+
printHelp(commands, lang);
|
|
96
137
|
return;
|
|
97
138
|
}
|
|
98
139
|
if (first === "-v" || first === "--version") {
|
|
@@ -101,8 +142,8 @@ async function main() {
|
|
|
101
142
|
}
|
|
102
143
|
const cmd = findCommand(first, commands);
|
|
103
144
|
if (!cmd) {
|
|
104
|
-
console.error(
|
|
105
|
-
printHelp(commands);
|
|
145
|
+
console.error(t("cli.unknownCommand", lang, { name: first }));
|
|
146
|
+
printHelp(commands, lang);
|
|
106
147
|
process.exitCode = 1;
|
|
107
148
|
return;
|
|
108
149
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/build.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { rm, cp, stat } from "node:fs/promises";
|
|
1
|
+
import { rm, cp, stat, readdir, lstat, symlink } from "node:fs/promises";
|
|
2
2
|
import { dirname, resolve, relative } from "node:path";
|
|
3
3
|
import { spawn } from "node:child_process";
|
|
4
|
+
import { createRequire } from "node:module";
|
|
4
5
|
import { createLogger } from "../core/logger.js";
|
|
5
6
|
import { loadConfigContext, resolveConfigPath, resolveOutDir } from "../core/config.js";
|
|
6
7
|
import { parseArgs } from "../utils/args.js";
|
|
7
8
|
import { ensureDir, pathExists } from "../utils/fs.js";
|
|
8
9
|
import { loadIgnoreRules, isIgnored } from "../utils/ignore.js";
|
|
9
|
-
import { resolveLang } from "../utils/i18n.js";
|
|
10
|
+
import { resolveLang, t } from "../utils/i18n.js";
|
|
10
11
|
function shouldSkipTsScript(entryRel, scriptEntry, src, root) {
|
|
11
12
|
if (!scriptEntry)
|
|
12
13
|
return false;
|
|
@@ -18,18 +19,30 @@ export async function handleBuild(ctx) {
|
|
|
18
19
|
const lang = ctx.lang ?? resolveLang(parsed.flags.lang);
|
|
19
20
|
const jsonOut = !!parsed.flags.json;
|
|
20
21
|
const quiet = !!parsed.flags.quiet || !!parsed.flags.q;
|
|
21
|
-
const { info: log } = createLogger({ json: jsonOut, quiet });
|
|
22
22
|
const outDirOverride = (typeof parsed.flags["out-dir"] === "string" && parsed.flags["out-dir"]) ||
|
|
23
23
|
(typeof parsed.flags.outdir === "string" && parsed.flags.outdir) ||
|
|
24
24
|
undefined;
|
|
25
25
|
const configPath = await resolveConfigPath(parsed.flags.config, lang);
|
|
26
26
|
if (!configPath) {
|
|
27
|
-
console.error("
|
|
27
|
+
console.error(t("common.configSelectionCancelled", lang));
|
|
28
28
|
process.exitCode = 1;
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
|
+
await runBuildWithMode({
|
|
32
|
+
configPath,
|
|
33
|
+
outDirOverride,
|
|
34
|
+
mode: "copy",
|
|
35
|
+
quiet,
|
|
36
|
+
jsonOut,
|
|
37
|
+
lang,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export async function runBuildWithMode(options) {
|
|
41
|
+
const { configPath, outDirOverride, mode, quiet, jsonOut } = options;
|
|
42
|
+
const resolvedLang = options.lang ?? resolveLang();
|
|
43
|
+
const { info: log } = createLogger({ json: jsonOut, quiet });
|
|
31
44
|
if (!(await pathExists(configPath))) {
|
|
32
|
-
console.error(
|
|
45
|
+
console.error(t("common.configNotFound", resolvedLang, { path: configPath }));
|
|
33
46
|
process.exitCode = 1;
|
|
34
47
|
return;
|
|
35
48
|
}
|
|
@@ -44,11 +57,12 @@ export async function handleBuild(ctx) {
|
|
|
44
57
|
const behaviorDest = behaviorSrc ? resolve(outDir, config.packs.behavior) : null;
|
|
45
58
|
const resourceDest = resourceSrc ? resolve(outDir, config.packs.resource) : null;
|
|
46
59
|
await rm(outDir, { recursive: true, force: true });
|
|
47
|
-
const
|
|
60
|
+
const scriptConfig = config.script;
|
|
61
|
+
const scriptEntryRel = scriptConfig?.entry;
|
|
48
62
|
// ESLint (if script present)
|
|
49
|
-
if (behaviorEnabled &&
|
|
63
|
+
if (behaviorEnabled && scriptConfig) {
|
|
50
64
|
try {
|
|
51
|
-
await runEslint(rootDir, quiet || jsonOut);
|
|
65
|
+
await runEslint(rootDir, Boolean(quiet || jsonOut), resolvedLang);
|
|
52
66
|
}
|
|
53
67
|
catch (err) {
|
|
54
68
|
console.error(err instanceof Error ? err.message : String(err));
|
|
@@ -56,12 +70,16 @@ export async function handleBuild(ctx) {
|
|
|
56
70
|
return;
|
|
57
71
|
}
|
|
58
72
|
}
|
|
59
|
-
|
|
73
|
+
const shouldBundle = behaviorEnabled &&
|
|
74
|
+
scriptConfig &&
|
|
75
|
+
scriptEntryRel &&
|
|
76
|
+
(scriptConfig.language === "typescript" || scriptEntryRel.endsWith(".ts"));
|
|
77
|
+
if (shouldBundle) {
|
|
60
78
|
const entryAbs = resolve(behaviorSrc, scriptEntryRel);
|
|
61
79
|
const outFile = resolve(behaviorDest, scriptEntryRel.replace(/\.ts$/, ".js"));
|
|
62
80
|
await ensureDir(dirname(outFile));
|
|
63
|
-
const bundleTask = await getBundleTask();
|
|
64
|
-
const externals =
|
|
81
|
+
const bundleTask = await getBundleTask(resolvedLang);
|
|
82
|
+
const externals = scriptConfig.dependencies
|
|
65
83
|
?.filter((d) => d.module_name !== "@minecraft/math" && d.module_name !== "@minecraft/vanilla-data")
|
|
66
84
|
.map((d) => d.module_name) ?? [];
|
|
67
85
|
const bundle = bundleTask({
|
|
@@ -71,48 +89,178 @@ export async function handleBuild(ctx) {
|
|
|
71
89
|
external: externals,
|
|
72
90
|
minifyWhitespace: false,
|
|
73
91
|
});
|
|
74
|
-
log(
|
|
92
|
+
log(t("build.bundling", resolvedLang, { entry: entryAbs, out: outFile }));
|
|
75
93
|
await runTask(bundle);
|
|
76
94
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
95
|
+
if (mode === "copy") {
|
|
96
|
+
// Copy behavior pack, skipping TS script source if a bundle was produced.
|
|
97
|
+
if (behaviorEnabled && behaviorSrc && behaviorDest) {
|
|
98
|
+
await ensureDir(dirname(behaviorDest));
|
|
99
|
+
await cp(behaviorSrc, behaviorDest, {
|
|
100
|
+
recursive: true,
|
|
101
|
+
force: true,
|
|
102
|
+
filter: (src) => !isIgnored(src, rootDir, ignoreRules) &&
|
|
103
|
+
!shouldSkipTsScript(scriptEntryRel ? dirname(scriptEntryRel).replace(/\\/g, "/") : "", scriptEntryRel, src, behaviorSrc),
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
// Copy resource pack as-is.
|
|
107
|
+
if (resourceEnabled && resourceSrc && resourceDest) {
|
|
108
|
+
await ensureDir(dirname(resourceDest));
|
|
109
|
+
await cp(resourceSrc, resourceDest, {
|
|
110
|
+
recursive: true,
|
|
111
|
+
force: true,
|
|
112
|
+
filter: (src) => !isIgnored(src, rootDir, ignoreRules),
|
|
113
|
+
});
|
|
114
|
+
}
|
|
86
115
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
116
|
+
else {
|
|
117
|
+
// Link behavior/resource packs (lighter build)
|
|
118
|
+
if (behaviorEnabled && behaviorSrc && behaviorDest) {
|
|
119
|
+
await ensureDir(behaviorDest);
|
|
120
|
+
const hasTsScripts = await hasTypeScriptScripts(behaviorSrc);
|
|
121
|
+
const excludeScripts = (scriptConfig &&
|
|
122
|
+
scriptEntryRel &&
|
|
123
|
+
(scriptConfig.language === "typescript" || scriptEntryRel.endsWith(".ts"))) ||
|
|
124
|
+
hasTsScripts;
|
|
125
|
+
await linkEntries(behaviorSrc, behaviorDest, rootDir, ignoreRules, excludeScripts ? new Set(["scripts"]) : undefined);
|
|
126
|
+
if (excludeScripts && scriptEntryRel) {
|
|
127
|
+
await ensureDir(resolve(behaviorDest, dirname(scriptEntryRel)));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (resourceEnabled && resourceSrc && resourceDest) {
|
|
131
|
+
await ensureDir(resourceDest);
|
|
132
|
+
await linkEntries(resourceSrc, resourceDest, rootDir, ignoreRules);
|
|
133
|
+
}
|
|
95
134
|
}
|
|
96
135
|
// Optionally ensure outDir exists if packs missing.
|
|
97
136
|
await ensureDir(outDir);
|
|
98
137
|
const outStat = await stat(outDir);
|
|
99
138
|
if (!outStat.isDirectory()) {
|
|
100
|
-
console.error(
|
|
139
|
+
console.error(t("build.outputNotDir", resolvedLang, { path: outDir }));
|
|
101
140
|
process.exitCode = 1;
|
|
102
141
|
return;
|
|
103
142
|
}
|
|
104
143
|
if (jsonOut) {
|
|
105
|
-
console.log(JSON.stringify({ ok: true, outDir }, null, 2));
|
|
144
|
+
console.log(JSON.stringify({ ok: true, outDir, mode }, null, 2));
|
|
106
145
|
}
|
|
107
146
|
else {
|
|
108
|
-
log(
|
|
147
|
+
log(t("build.completed", resolvedLang, { mode, outDir }));
|
|
109
148
|
}
|
|
110
149
|
}
|
|
111
|
-
async function
|
|
112
|
-
const
|
|
150
|
+
async function linkEntries(srcDir, destDir, rootDir, ignoreRules, excludeNames) {
|
|
151
|
+
const entries = await readdir(srcDir, { withFileTypes: true });
|
|
152
|
+
for (const entry of entries) {
|
|
153
|
+
if (excludeNames?.has(entry.name))
|
|
154
|
+
continue;
|
|
155
|
+
const srcPath = resolve(srcDir, entry.name);
|
|
156
|
+
if (isIgnored(srcPath, rootDir, ignoreRules))
|
|
157
|
+
continue;
|
|
158
|
+
const destPath = resolve(destDir, entry.name);
|
|
159
|
+
if (await pathExists(destPath)) {
|
|
160
|
+
await rm(destPath, { recursive: true, force: true });
|
|
161
|
+
}
|
|
162
|
+
if (entry.isDirectory()) {
|
|
163
|
+
const type = process.platform === "win32" ? "junction" : "dir";
|
|
164
|
+
await symlink(srcPath, destPath, type);
|
|
165
|
+
}
|
|
166
|
+
else if (entry.isSymbolicLink()) {
|
|
167
|
+
const stat = await lstat(srcPath);
|
|
168
|
+
const type = stat.isDirectory()
|
|
169
|
+
? process.platform === "win32"
|
|
170
|
+
? "junction"
|
|
171
|
+
: "dir"
|
|
172
|
+
: "file";
|
|
173
|
+
await symlink(srcPath, destPath, type);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
await symlink(srcPath, destPath, "file");
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
async function hasTypeScriptScripts(packRoot) {
|
|
181
|
+
const scriptsRoot = resolve(packRoot, "scripts");
|
|
182
|
+
if (!(await pathExists(scriptsRoot)))
|
|
183
|
+
return false;
|
|
184
|
+
const stack = [scriptsRoot];
|
|
185
|
+
while (stack.length) {
|
|
186
|
+
const dir = stack.pop();
|
|
187
|
+
if (!dir)
|
|
188
|
+
continue;
|
|
189
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
190
|
+
for (const entry of entries) {
|
|
191
|
+
const fullPath = resolve(dir, entry.name);
|
|
192
|
+
if (entry.isDirectory()) {
|
|
193
|
+
stack.push(fullPath);
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
if (entry.isFile() && entry.name.endsWith(".ts")) {
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
export async function runScriptBuildOnly(options) {
|
|
204
|
+
const { configPath, outDirOverride, quiet, jsonOut, lang } = options;
|
|
205
|
+
const { info: log } = createLogger({ json: jsonOut, quiet });
|
|
206
|
+
const resolvedLang = lang ?? "ja";
|
|
207
|
+
if (!(await pathExists(configPath))) {
|
|
208
|
+
console.error(t("common.configNotFound", resolvedLang, { path: configPath }));
|
|
209
|
+
process.exitCode = 1;
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
const configCtx = await loadConfigContext(configPath);
|
|
213
|
+
const { config, rootDir } = configCtx;
|
|
214
|
+
const ignoreRules = await loadIgnoreRules(rootDir);
|
|
215
|
+
const behaviorEnabled = configCtx.behavior.enabled;
|
|
216
|
+
const behaviorSrc = configCtx.behavior.path;
|
|
217
|
+
const scriptConfig = config.script;
|
|
218
|
+
const scriptEntryRel = scriptConfig?.entry;
|
|
219
|
+
if (!behaviorEnabled || !behaviorSrc || !scriptConfig || !scriptEntryRel) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
const shouldBundle = scriptConfig.language === "typescript" || scriptEntryRel.endsWith(".ts");
|
|
223
|
+
if (!shouldBundle) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
const outDir = resolveOutDir(configCtx, outDirOverride);
|
|
227
|
+
const behaviorDest = resolve(outDir, config.packs.behavior);
|
|
228
|
+
const scriptsOutDir = resolve(behaviorDest, "scripts");
|
|
229
|
+
try {
|
|
230
|
+
await runEslint(rootDir, Boolean(quiet || jsonOut), resolvedLang);
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
234
|
+
process.exitCode = 1;
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
await rm(scriptsOutDir, { recursive: true, force: true });
|
|
238
|
+
const entryAbs = resolve(behaviorSrc, scriptEntryRel);
|
|
239
|
+
const outFile = resolve(behaviorDest, scriptEntryRel.replace(/\.ts$/, ".js"));
|
|
240
|
+
await ensureDir(dirname(outFile));
|
|
241
|
+
const bundleTask = await getBundleTask(resolvedLang);
|
|
242
|
+
const externals = scriptConfig.dependencies
|
|
243
|
+
?.filter((d) => d.module_name !== "@minecraft/math" && d.module_name !== "@minecraft/vanilla-data")
|
|
244
|
+
.map((d) => d.module_name) ?? [];
|
|
245
|
+
const bundle = bundleTask({
|
|
246
|
+
entryPoint: entryAbs,
|
|
247
|
+
outfile: outFile,
|
|
248
|
+
sourcemap: true,
|
|
249
|
+
external: externals,
|
|
250
|
+
minifyWhitespace: false,
|
|
251
|
+
});
|
|
252
|
+
log(t("build.bundling", resolvedLang, { entry: entryAbs, out: outFile }));
|
|
253
|
+
await runTask(bundle);
|
|
254
|
+
// Keep ignore rules loaded to match build behavior, even though we only emit scripts.
|
|
255
|
+
void ignoreRules;
|
|
256
|
+
}
|
|
257
|
+
async function getBundleTask(lang) {
|
|
258
|
+
const require = createRequire(import.meta.url);
|
|
259
|
+
const coreBuild = require("@minecraft/core-build-tasks");
|
|
113
260
|
const task = coreBuild.bundleTask;
|
|
114
|
-
if (!task)
|
|
115
|
-
throw new Error("
|
|
261
|
+
if (!task) {
|
|
262
|
+
throw new Error(t("build.bundleTaskMissing", lang));
|
|
263
|
+
}
|
|
116
264
|
return task;
|
|
117
265
|
}
|
|
118
266
|
function runTask(task) {
|
|
@@ -129,10 +277,10 @@ function runTask(task) {
|
|
|
129
277
|
}
|
|
130
278
|
});
|
|
131
279
|
}
|
|
132
|
-
async function runEslint(rootDir, quiet) {
|
|
280
|
+
async function runEslint(rootDir, quiet, lang) {
|
|
133
281
|
const eslintPath = resolve(rootDir, "node_modules/.bin/eslint");
|
|
134
282
|
if (!(await pathExists(eslintPath))) {
|
|
135
|
-
throw new Error("
|
|
283
|
+
throw new Error(t("build.eslintMissing", lang));
|
|
136
284
|
}
|
|
137
285
|
const args = ["packs/behavior/scripts/**/*.{ts,js}"];
|
|
138
286
|
const useShell = process.platform === "win32";
|
|
@@ -147,7 +295,7 @@ async function runEslint(rootDir, quiet) {
|
|
|
147
295
|
if (code === 0)
|
|
148
296
|
resolve();
|
|
149
297
|
else
|
|
150
|
-
reject(new Error(
|
|
298
|
+
reject(new Error(t("build.eslintExit", lang, { code: String(code) })));
|
|
151
299
|
});
|
|
152
300
|
});
|
|
153
301
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|