@66rpg/lumimaker 0.1.55 → 0.1.56

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.
@@ -19,9 +19,9 @@
19
19
 
20
20
  1. 读工程里的 README、玩法说明、界面文案,拟定给人看的中文标题和一两句简介。简介:中文不超过 60 个字,英文及其他不超过 120 个字符;写在一起时,一个中文按两个字符计,合计不超过 120。不要用 `game`、`untitled` 或英文短名当标题。
21
21
  2. 口语念给用户确认。同意后写入工程的展示名和简介。用户已经给了标题或简介就沿用。
22
- 3. 同时拟一篇帖子正文(普通文本,不要写 Markdown 标记),口语确认后作为 `--content` 加进**同一条**首发 `publish`。不要写入 `package.json`,不要为此跑查询或更新命令,也不要把长介绍写进数据包说明。
23
- 4. 确认前不要发。然后再跑构建和 `npx lumimaker publish`(带上已确认的 `--content`)。
24
- 5. 续发(本地已有对应正式版或试玩记录)不要重写标题简介,也不要带 `--content`;改名、改简介、改正文请用户到网页操作。
22
+ 3. 同时拟一篇帖子正文(普通文本,不要写 Markdown,不超过 64000 字)。确认后写入 UTF-8 的 JSON 文件:`summary` 是简介,`content` 是正文,段落用真实换行。用绝对路径传给同一条首发命令:`npx lumimaker publish --content-file "<绝对路径>"`。路径有空格时整段放在引号里。Windows 上 `/` 和 `\` 都可以,文件夹名不要以空格或点结尾,也不要出现 `<>:"|?*`。Mac 上用 `/`。不要把正文写进命令行,不要使用 `--content` 或 `--summary`。编码无法识别或中文变成问号时,把提示原文告诉用户,把文件另存为 UTF-8 后再发,不要猜原文,不要加 `--yes`。
23
+ 4. 确认前不要发。然后再跑构建和带 `--content-file` 的 `npx lumimaker publish`。
24
+ 5. 续发(本地已有对应正式版或试玩记录)不要重写标题简介,也不要带 `--content-file`。带了简介或正文会被拒绝,把中文原因和建议原文告诉用户。改名、改简介、改正文请用户到网页操作。空白简介和空白正文都不提交,不要传空字符串。
25
25
 
26
26
  ---
27
27
 
@@ -61,4 +61,16 @@
61
61
  发布完成后,CLI 会在终端输出中文卡片。请直接提取其中的关键信息告知用户:
62
62
  - **发布状态**:如「发版成功」(已直接通过)或「已提交审核」(审核中)。
63
63
  - **帖子链接**:提取输出中的「帖子:...」或「帖子(草稿,确认后才会公开):...」整行链接展示给用户。不要向用户展示版本 ID 或关联帖 ID。不要展示正式版或试玩的作品地址(播放页、带 `lumimaker.66rpg.com` 或 `cg-maker.66rpg.com` 的链接)。
64
- - 平台作品 ID(`game_id`)等信息将由平台自动记录在工程本地 `.lumimaker/game.json` 中,无需手动维护。
64
+ - 平台会把作品记录写在工程目录里,不用手动维护。不要把记录文件或里面的字段念给用户。
65
+
66
+ ---
67
+
68
+ ## 6. 查询审核状态
69
+
70
+ 作品已经发过、用户想知道审核到哪了时,在工程目录执行:
71
+
72
+ ```bash
73
+ npx lumimaker status-game
74
+ ```
75
+
76
+ 这条只查作品。一次会查出当前工程的正式版和试玩,各自只看最新一版。模板和开源工程暂无对应命令。把卡片里的中文告诉用户:哪一侧、版本名、审核结果。被拒绝时把「说明」原文一并告诉用户。还没发过的那一侧会写「还没有发布」。不要补充作品编号或版本编号,不要改用 `games` 查询,也不要为了看状态再发一版。
@@ -23,9 +23,9 @@ npx lumimaker publish-project
23
23
 
24
24
  1. 读工程说明和源码用途,拟定给人看的中文标题和一两句简介。简介:中文不超过 60 个字,英文及其他不超过 120 个字符;写在一起时,一个中文按两个字符计,合计不超过 120。不要用 `untitled`、`project` 或英文短名当标题。
25
25
  2. 口语确认后再写入工程的展示名和简介。用户已经给了标题或简介就沿用。
26
- 3. 同时拟一篇帖子正文(普通文本,不要写 Markdown 标记),口语确认后作为 `--content` 加进**同一条**首发 `publish-project`。不要写入 `package.json`,不要为此跑更新命令。
27
- 4. 确认前不要发。然后再执行带 `--content` 的 `npx lumimaker publish-project`。
28
- 5. 续发不要重写标题简介,也不要带 `--content`;改名、改简介、改正文请用户到网页操作。
26
+ 3. 同时拟一篇帖子正文(普通文本,不要写 Markdown,不超过 64000 字)。确认后写入 UTF-8 的 JSON 文件:`summary` 是简介,`content` 是正文,段落用真实换行。用绝对路径传给同一条首发命令:`npx lumimaker publish-project --content-file "<绝对路径>"`。路径有空格时整段放在引号里。Windows 上 `/` 和 `\` 都可以,文件夹名不要以空格或点结尾,也不要出现 `<>:"|?*`。Mac 上用 `/`。不要把正文写进命令行,不要使用 `--content` 或 `--summary`。编码无法识别或中文变成问号时,把提示原文告诉用户,把文件另存为 UTF-8 后再发,不要猜原文,不要加 `--yes`。
27
+ 4. 确认前不要发。然后再执行带 `--content-file` 的 `npx lumimaker publish-project`。
28
+ 5. 续发不要重写标题简介,也不要带 `--content-file`。带了简介或正文会被拒绝,把中文原因和建议原文告诉用户。改名、改简介、改正文请用户到网页操作。空白简介和空白正文都不提交,不要传空字符串。
29
29
 
30
30
  ---
31
31
 
@@ -52,5 +52,5 @@ npx lumimaker publish-project
52
52
  ## 4. 发布结果与交付
53
53
 
54
54
  发布完成后,CLI 会在终端输出中文卡片。请直接提取其中的关键信息告知用户:
55
- - **发布状态**:如「发版成功」或「已提交审核」。
55
+ - **发布状态**:如「发版成功」或「已提交审核」。之后想看审核进度,请用户到网页查看。不要用 `status-game`(那只查作品)。
56
56
  - **帖子链接**:提取输出中的「帖子:...」或「帖子(草稿,确认后才会公开):...」整行链接展示给用户。不要向用户展示版本 ID 或关联帖 ID。
@@ -32,7 +32,7 @@
32
32
  ## 3. 关键交互与规则
33
33
 
34
34
  ### 3.1 首次发布与平台展示名
35
- - **先拟文案再发**:本地还没有平台模板记录时,主动告诉用户简介和帖子正文可以由助手拟好,确认后随这次发布一起提交,不必发完再去网页粘贴。先读 README、玩法说明和素材,拟定给人看的中文标题和一两句简介(中文不超过 60 个字,英文及其他不超过 120 个字符;写在一起时,一个中文按两个字符计,合计不超过 120),口语确认后再写入工程。不要用 `template`、`untitled` 或英文短名当标题。用户已经给了标题或简介就沿用。同时拟一篇帖子正文(普通文本,不要写 Markdown 标记),确认后作为 `--content` 加进**同一条**首发 `publish-template`(含 `--init`)。不要把长介绍写进数据包说明或 `package.json`,也不要为此跑更新命令。续发和 `--fork` 不要带 `--content`。续发不要重写标题简介;以后改简介或正文请用户到网页。
35
+ - **先拟文案再发**:本地还没有平台模板记录时,主动告诉用户简介和帖子正文可以由助手拟好,确认后随这次发布一起提交,不必发完再去网页粘贴。先读 README、玩法说明和素材,拟定给人看的中文标题和一两句简介(中文不超过 60 个字,英文及其他不超过 120 个字符;写在一起时,一个中文按两个字符计,合计不超过 120),口语确认后再写入工程。不要用 `template`、`untitled` 或英文短名当标题。用户已经给了标题或简介就沿用。同时拟一篇帖子正文(普通文本,不要写 Markdown 标记)。确认后写入 UTF-8 的 JSON 文件:`summary` 是简介,`content` 是正文,段落用真实换行,正文不超过 64000 字。用绝对路径传给**同一条**首发 `publish-template`(含 `--init`)的 `--content-file`。路径有空格时整段放在引号里。Windows 上 `/` 和 `\` 都可以,文件夹名不要以空格或点结尾,也不要出现 `<>:"|?*`。Mac 上用 `/`。不要把正文写进 `npx` 命令行,不要使用 `--content` 或 `--summary`。编码无法识别或中文变成问号时,必须把提示原文告诉用户,本轮禁止再发布,不要加 `--yes`,把文件另存为 UTF-8 后再发,不要猜原文。不要把长介绍写进数据包说明或 `package.json`,也不要为此跑更新命令。续发和 `--fork` 不要带 `--content-file`。带了简介或正文会被拒绝,把中文原因和建议原文告诉用户。空白简介和空白正文都不提交,不要传空字符串。续发不要重写标题简介;以后改简介或正文请用户到网页。
36
36
  - **首发自动带包**:首次发布模板时,工程根目录下必须存在 `assets/` 且包含文件。平台会自动上传数据包,无需手动指定 `--with-assets`,也不可绑定已有的数据包 ID。
37
37
  - **展示名填写与保护**:
38
38
  - 首发必须提供合法的平台展示名称(支持中文,不能包含 `/` 或 `@`)。
@@ -59,6 +59,6 @@
59
59
  ## 4. 发布结果与交付
60
60
 
61
61
  发布完成后,CLI 会在终端输出中文卡片。请直接提取其中的关键信息告知用户:
62
- - **发布状态**:如「发版成功」或「已提交审核」。
62
+ - **发布状态**:如「发版成功」或「已提交审核」。之后想看审核进度,请用户到网页查看。不要用 `status-game`(那只查作品)。
63
63
  - **帖子链接**:提取输出中的「帖子:...」或「帖子(草稿,确认后才会公开):...」整行链接。不要向用户展示版本 ID、模板版本 ID 或关联帖 ID。
64
64
  - **他人拉取指引**:若输出中包含「他人拉取:...」行(格式形如 `npx @66rpg/lumimaker-create@latest 用户名/slug@版本`,带数据包时会包含 `--with-assets <ID>`),须**原样复制并完整展示给用户**。**切勿将命令中的英文标识替换为中文模板名,缺少用户名时也切勿擅自编造 `<用户名>`**。
@@ -1,117 +1,117 @@
1
- # 幻光文游社区模板规范协议
2
-
3
- | 项 | 内容 |
4
- |---|---|
5
- | 协议版本 | 1.0 |
6
- | 最新更新 | 2026-09-22 |
7
- | 修订日期 | 2026-09-22 |
8
-
9
- 本协议约定幻光文游社区模板工程的基础结构、`package.json` 配置与构建产物要求。未在本文中列出的目录、文件与配置字段,均不属于本协议的约定范围。
10
-
11
- **约束用词定义**:
12
- - **必须**:模板工程必须满足的硬性要求,未满足则视为不合规。
13
- - **可选**:模板工程可自行决定是否提供;若提供,须符合本协议规定的格式。
14
- - **建议**:推荐的最佳实践做法,不作为合规与否的判断条件。
15
-
16
- ---
17
-
18
- ## 1. 目录结构
19
-
20
- 模板工程根目录即为项目的源码根目录。
21
-
22
- ### 1.1 结构全景
23
-
24
- ```text
25
- .
26
- ├── package.json # 必须:工程配置与脚本清单
27
- ├── README.md # 必须:模板使用说明(供人阅读)
28
- ├── AGENTS.md # 必须:AI 协同指南(说明工程结构与修改建议)
29
- ├── src/ # 必须:模板源代码目录
30
- ├── assets/ # 可选:模板资源目录(包含作品数据、图片、音频等;若有资源放入此目录,也可没有任何资源,纯 index.html)
31
- └── skill/ # 可选:模板自带的玩法技能目录
32
- └── SKILL.md # 可选:供 AI 阅读的玩法说明
33
- ```
34
-
35
- ### 1.2 目录与文件说明
36
-
37
- | 路径 | 属性 | 作用与要求 |
38
- |---|---|---|
39
- | `package.json` | **必须** | 模板工程的包清单,声明平台展示名、英文标识、版本号、数据包版本与必要脚本。详见第 2 节。 |
40
- | `README.md` | **必须** | 供创作者阅读的工程说明与使用指引。 |
41
- | `AGENTS.md` | **必须** | 供 AI 助手阅读的协同指南,须明确说明工程组织方式与推荐的修改位置(若包含 `assets/` 须说明其子目录划分)。 |
42
- | `src/` | **必须** | 模板的完整源代码目录,不限制编程语言或开发框架(如 React、Vue、Pixi、原生 Canvas 均可)。 |
43
- | `assets/` | **可选** | 模板的资源目录(包含作品数据、图片、音频、样式等)。若模板包含静态资源,统一存放于此;也可以没有任何资源文件或不创建此目录,工程最终可仅依赖纯 `index.html` 运行。 |
44
- | `skill/SKILL.md` | **可选** | 本模板特定的玩法技能说明文件,指导 AI 助手如何协助创作者调整作品规则。若无独立玩法技能可不提供。 |
45
-
46
- ---
47
-
48
- ## 2. package.json
49
-
50
- `package.json` 文件必须位于工程根目录,且内容为合法的 JSON 对象。
51
-
52
- ### 2.1 基础配置字段
53
-
54
- 所有字段集中约定如下:
55
-
56
- | 字段 | 属性 | 数据类型 | 格式与要求 | 示例 |
57
- |---|---|---|---|---|
58
- | `name` | **必须** | string | 平台展示名称,供人阅读,支持中文;去掉首尾空格后长度至少为 1;不能包含字符 `/` 或 `@`。 | `"趣味问答"`、`"quiz-react"` |
59
- | `slug` | **必须** | string | 模板英文短名,在平台中唯一标识本模板;格式须匹配 `^[a-z0-9][a-z0-9-]{0,62}$`。详见下方细则。 | `"quiz-react"` |
60
- | `version` | **必须** | string | 模板版本号;格式须匹配 `^(?=.{1,16}$)[a-z0-9]+(?:[.-][a-z0-9]+)*$`。详见下方细则。 | `"0.1.0"`、`"1.0.0-a"` |
61
- | `data_ver` | **必须** | string 或 number | 配套数据包版本;非空字符串或有限数字。详见下方细则。 | `"1"` 或 `1` |
62
- | `description` | **可选** | string | 模板简介。若省略或填写空字符串,按空简介处理。有内容时:中文不超过 60 个字,英文及其他不超过 120 个字符;写在一起时,一个中文按两个字符计,合计不超过 120。 | `"基于 React 的题库答题作品模板"` |
63
-
64
- #### 字段格式细则
65
-
66
- - **`slug`(英文短名)**
67
- - 正则表达式:`^[a-z0-9][a-z0-9-]{0,62}$`
68
- - 长度限制:1 至 63 个字符。
69
- - 字符范围:仅允许小写英文字母(`a-z`)、数字(`0-9`)和连字符(`-`)。
70
- - 起始字符:必须以小写字母或数字开头(首字符不能是连字符 `-`)。
71
-
72
- - **`version`(模板版本号)**
73
- - 正则表达式:`^(?=.{1,16}$)[a-z0-9]+(?:[.-][a-z0-9]+)*$`
74
- - 长度限制:1 至 16 个字符。
75
- - 字符范围:仅允许小写英文字母(`a-z`)、数字(`0-9`)、英文点号(`.`)和连字符(`-`)。
76
- - 边界要求:必须以小写字母或数字开头,且以小写字母或数字结尾。
77
- - 连续符号限制:点号与连字符不能相邻或连续出现(例如禁止 `..`、`--`、`.-`、`-.`)。
78
- - 合法示例:`0.1.0`、`1.0.0-a`、`1.0.0-rc1`。
79
-
80
- - **`data_ver`(数据包版本)**
81
- - 当类型为字符串(string)时:去除首尾空白字符后,长度至少为 1。示例:`"1"`。
82
- - 当类型为数字(number)时:必须为合法的有限数值。示例:`1`。
83
-
84
- ### 2.2 必须脚本命令 (`scripts`)
85
-
86
- `package.json` 中的 `scripts` 字段必须为对象,且必须包含以下 5 个指定脚本。每个脚本对应的值必须为字符串,且去除首尾空白后不可为空。脚本的具体执行命令由模板自身的技术栈决定。
87
-
88
- | 脚本名称 | 属性 | 作用与要求 |
89
- |---|---|---|
90
- | `dev` | **必须** | 启动正式内容的本地开发服务。 |
91
- | `dev:demo` | **必须** | 启动试玩内容的本地开发服务。若模板未制作独立的试玩内容,命令可与 `dev` 保持完全一致。 |
92
- | `build` | **必须** | 构建正式版产物到根目录 `dist/`。详见第 3 节。 |
93
- | `build:demo` | **必须** | 构建试玩版产物到根目录 `dist/`。若模板未制作独立的试玩内容,命令可与 `build` 保持完全一致。 |
94
- | `validate` | **必须** | 执行模板自身的数据检查。若模板包含独立的试玩数据,此单条脚本须同时覆盖正式数据与试玩数据的校验。 |
95
-
96
- ---
97
-
98
- ## 3. 构建产物 (dist/)
99
-
100
- 构建产物用于静态托管与作品发布,统一约定如下:
101
-
102
- 1. **产物目录**:`scripts.build` 与 `scripts.build:demo` 的输出目录必须是工程根目录下的 `dist/`,两者共用该目录。
103
- 2. **入口文件**:`dist/` 根目录下**必须**产出 `index.html` 入口文件。可以仅产出纯 `index.html`,无需任何其他静态资源文件。
104
- 3. **静态资源(建议)**:若构建产物包含 JavaScript、CSS、图片等静态资源,建议放置于与 `index.html` 同级的 `dist/assets/` 目录下。
105
- 4. **其他产物**:除 `dist/index.html` 外,产物目录内的其他文件组织形式本协议不作强制限制。
106
- 5. **社区播放页能打开的玩法 HTML**:写包内 `.html` 路径,例如 `staff.html` 或 `assets/index.html`。目录地址(如 `jubenba/`)打不开,也不会自动改成该目录的 `index.html`。页内锚点写 `#id`,不要写 `./#id`。下一页用 `<a href>` 或 `openPlayHtml`,不要用 `location.href`、`location.assign`、`location.replace`。链接写法见 `lumimaker-play-sdk`。
107
-
108
- ---
109
-
110
- ## 修订记录
111
-
112
- | 文档版本 | 修订日期 | 变更说明 |
113
- |---|---|---|
114
- | 1.0 | 2026-09-22 | 初始版本。明确工程目录结构、`package.json` 配置字段与脚本规范,以及 `dist/` 构建产物约定(assets 为可选,支持纯 index.html)。 |
115
- | 1.1 | 2026-10-05 | 补充:社区播放页只签 `dist/` 根目录的玩法 HTML;目录地址不会回落为该目录的 `index.html`。 |
116
- | 1.2 | 2026-10-09 | 播放页改为签包内 `.html` 路径,子目录里的页面可以打开;目录地址仍然不会变成该目录的 `index.html`。 |
117
- | 1.3 | 2026-10-12 | 播放页换页用 `<a href>` 或 `openPlayHtml`,不要用 `location.href`、`location.assign`、`location.replace`。 |
1
+ # 幻光文游社区模板规范协议
2
+
3
+ | 项 | 内容 |
4
+ |---|---|
5
+ | 协议版本 | 1.0 |
6
+ | 最新更新 | 2026-09-22 |
7
+ | 修订日期 | 2026-09-22 |
8
+
9
+ 本协议约定幻光文游社区模板工程的基础结构、`package.json` 配置与构建产物要求。未在本文中列出的目录、文件与配置字段,均不属于本协议的约定范围。
10
+
11
+ **约束用词定义**:
12
+ - **必须**:模板工程必须满足的硬性要求,未满足则视为不合规。
13
+ - **可选**:模板工程可自行决定是否提供;若提供,须符合本协议规定的格式。
14
+ - **建议**:推荐的最佳实践做法,不作为合规与否的判断条件。
15
+
16
+ ---
17
+
18
+ ## 1. 目录结构
19
+
20
+ 模板工程根目录即为项目的源码根目录。
21
+
22
+ ### 1.1 结构全景
23
+
24
+ ```text
25
+ .
26
+ ├── package.json # 必须:工程配置与脚本清单
27
+ ├── README.md # 必须:模板使用说明(供人阅读)
28
+ ├── AGENTS.md # 必须:AI 协同指南(说明工程结构与修改建议)
29
+ ├── src/ # 必须:模板源代码目录
30
+ ├── assets/ # 可选:模板资源目录(包含作品数据、图片、音频等;若有资源放入此目录,也可没有任何资源,纯 index.html)
31
+ └── skill/ # 可选:模板自带的玩法技能目录
32
+ └── SKILL.md # 可选:供 AI 阅读的玩法说明
33
+ ```
34
+
35
+ ### 1.2 目录与文件说明
36
+
37
+ | 路径 | 属性 | 作用与要求 |
38
+ |---|---|---|
39
+ | `package.json` | **必须** | 模板工程的包清单,声明平台展示名、英文标识、版本号、数据包版本与必要脚本。详见第 2 节。 |
40
+ | `README.md` | **必须** | 供创作者阅读的工程说明与使用指引。 |
41
+ | `AGENTS.md` | **必须** | 供 AI 助手阅读的协同指南,须明确说明工程组织方式与推荐的修改位置(若包含 `assets/` 须说明其子目录划分)。 |
42
+ | `src/` | **必须** | 模板的完整源代码目录,不限制编程语言或开发框架(如 React、Vue、Pixi、原生 Canvas 均可)。 |
43
+ | `assets/` | **可选** | 模板的资源目录(包含作品数据、图片、音频、样式等)。若模板包含静态资源,统一存放于此;也可以没有任何资源文件或不创建此目录,工程最终可仅依赖纯 `index.html` 运行。 |
44
+ | `skill/SKILL.md` | **可选** | 本模板特定的玩法技能说明文件,指导 AI 助手如何协助创作者调整作品规则。若无独立玩法技能可不提供。 |
45
+
46
+ ---
47
+
48
+ ## 2. package.json
49
+
50
+ `package.json` 文件必须位于工程根目录,且内容为合法的 JSON 对象。
51
+
52
+ ### 2.1 基础配置字段
53
+
54
+ 所有字段集中约定如下:
55
+
56
+ | 字段 | 属性 | 数据类型 | 格式与要求 | 示例 |
57
+ |---|---|---|---|---|
58
+ | `name` | **必须** | string | 平台展示名称,供人阅读,支持中文;去掉首尾空格后长度至少为 1;不能包含字符 `/` 或 `@`。 | `"趣味问答"`、`"quiz-react"` |
59
+ | `slug` | **必须** | string | 模板英文短名,在平台中唯一标识本模板;格式须匹配 `^[a-z0-9][a-z0-9-]{0,62}$`。详见下方细则。 | `"quiz-react"` |
60
+ | `version` | **必须** | string | 模板版本号;格式须匹配 `^(?=.{1,16}$)[a-z0-9]+(?:[.-][a-z0-9]+)*$`。详见下方细则。 | `"0.1.0"`、`"1.0.0-a"` |
61
+ | `data_ver` | **必须** | string 或 number | 配套数据包版本;非空字符串或有限数字。详见下方细则。 | `"1"` 或 `1` |
62
+ | `description` | **可选** | string | 可以不写。发布简介不读这个字段。简介写在文案 JSON 的 `summary`,用 `--content-file` 提交。若写了,必须是字符串。 | `""` |
63
+
64
+ #### 字段格式细则
65
+
66
+ - **`slug`(英文短名)**
67
+ - 正则表达式:`^[a-z0-9][a-z0-9-]{0,62}$`
68
+ - 长度限制:1 至 63 个字符。
69
+ - 字符范围:仅允许小写英文字母(`a-z`)、数字(`0-9`)和连字符(`-`)。
70
+ - 起始字符:必须以小写字母或数字开头(首字符不能是连字符 `-`)。
71
+
72
+ - **`version`(模板版本号)**
73
+ - 正则表达式:`^(?=.{1,16}$)[a-z0-9]+(?:[.-][a-z0-9]+)*$`
74
+ - 长度限制:1 至 16 个字符。
75
+ - 字符范围:仅允许小写英文字母(`a-z`)、数字(`0-9`)、英文点号(`.`)和连字符(`-`)。
76
+ - 边界要求:必须以小写字母或数字开头,且以小写字母或数字结尾。
77
+ - 连续符号限制:点号与连字符不能相邻或连续出现(例如禁止 `..`、`--`、`.-`、`-.`)。
78
+ - 合法示例:`0.1.0`、`1.0.0-a`、`1.0.0-rc1`。
79
+
80
+ - **`data_ver`(数据包版本)**
81
+ - 当类型为字符串(string)时:去除首尾空白字符后,长度至少为 1。示例:`"1"`。
82
+ - 当类型为数字(number)时:必须为合法的有限数值。示例:`1`。
83
+
84
+ ### 2.2 必须脚本命令 (`scripts`)
85
+
86
+ `package.json` 中的 `scripts` 字段必须为对象,且必须包含以下 5 个指定脚本。每个脚本对应的值必须为字符串,且去除首尾空白后不可为空。脚本的具体执行命令由模板自身的技术栈决定。
87
+
88
+ | 脚本名称 | 属性 | 作用与要求 |
89
+ |---|---|---|
90
+ | `dev` | **必须** | 启动正式内容的本地开发服务。 |
91
+ | `dev:demo` | **必须** | 启动试玩内容的本地开发服务。若模板未制作独立的试玩内容,命令可与 `dev` 保持完全一致。 |
92
+ | `build` | **必须** | 构建正式版产物到根目录 `dist/`。详见第 3 节。 |
93
+ | `build:demo` | **必须** | 构建试玩版产物到根目录 `dist/`。若模板未制作独立的试玩内容,命令可与 `build` 保持完全一致。 |
94
+ | `validate` | **必须** | 执行模板自身的数据检查。若模板包含独立的试玩数据,此单条脚本须同时覆盖正式数据与试玩数据的校验。 |
95
+
96
+ ---
97
+
98
+ ## 3. 构建产物 (dist/)
99
+
100
+ 构建产物用于静态托管与作品发布,统一约定如下:
101
+
102
+ 1. **产物目录**:`scripts.build` 与 `scripts.build:demo` 的输出目录必须是工程根目录下的 `dist/`,两者共用该目录。
103
+ 2. **入口文件**:`dist/` 根目录下**必须**产出 `index.html` 入口文件。可以仅产出纯 `index.html`,无需任何其他静态资源文件。
104
+ 3. **静态资源(建议)**:若构建产物包含 JavaScript、CSS、图片等静态资源,建议放置于与 `index.html` 同级的 `dist/assets/` 目录下。
105
+ 4. **其他产物**:除 `dist/index.html` 外,产物目录内的其他文件组织形式本协议不作强制限制。
106
+ 5. **社区播放页能打开的玩法 HTML**:写包内 `.html` 路径,例如 `staff.html` 或 `assets/index.html`。目录地址(如 `jubenba/`)打不开,也不会自动改成该目录的 `index.html`。页内锚点写 `#id`,不要写 `./#id`。下一页用 `<a href>` 或 `openPlayHtml`,不要用 `location.href`、`location.assign`、`location.replace`。链接写法见 `lumimaker-play-sdk`。
107
+
108
+ ---
109
+
110
+ ## 修订记录
111
+
112
+ | 文档版本 | 修订日期 | 变更说明 |
113
+ |---|---|---|
114
+ | 1.0 | 2026-09-22 | 初始版本。明确工程目录结构、`package.json` 配置字段与脚本规范,以及 `dist/` 构建产物约定(assets 为可选,支持纯 index.html)。 |
115
+ | 1.1 | 2026-10-05 | 补充:社区播放页只签 `dist/` 根目录的玩法 HTML;目录地址不会回落为该目录的 `index.html`。 |
116
+ | 1.2 | 2026-10-09 | 播放页改为签包内 `.html` 路径,子目录里的页面可以打开;目录地址仍然不会变成该目录的 `index.html`。 |
117
+ | 1.3 | 2026-10-12 | 播放页换页用 `<a href>` 或 `openPlayHtml`,不要用 `location.href`、`location.assign`、`location.replace`。 |