mvframe 1.0.5 → 1.0.6

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.cn.md CHANGED
@@ -163,7 +163,7 @@ yarn build
163
163
 
164
164
  ## 命令行:项目目录雏形(推荐)
165
165
 
166
- 在**空目录或已有 Vite 工程根目录**执行,生成 `src/views`、`src/component`、`src/api`、`src/assets/img`、`src/assets/style`、`src/router`、`src/pinia/chip`、`src/config` 及示例 `main.js` / `App.vue`(已 `app.use(mvframe, …)` 挂好路由、Pinia `storeChips`、config)。若不存在则附带 `index.html` 与 `vite.config.js`。
166
+ 在**空目录或已有 Vite 工程根目录**执行,生成 `src/views`、`src/component`、`src/api`、`src/assets/img`、`src/assets/style`、`src/router`、`src/pinia/chip`、`src/config` 及示例 `main.js` / `App.vue`(已 `app.use(mvframe, …)` 挂好路由、Pinia `storeChips`、config)。若不存在则附带 `index.html` 与 `vite.config.js`。会**合并** `package.json` 的 `dependencies` / `devDependencies`(与 Vite 模板一致;**同名包保留你原有版本**),最后请执行 **`yarn install`**;加 `--no-package-json` 可不改动 `package.json`。
167
167
 
168
168
  ```bash
169
169
  cd /path/to/your-app
@@ -171,6 +171,9 @@ node /path/to/mvframe/scripts/scaffold-app.js
171
171
  # 覆盖已有同名文件:
172
172
  node /path/to/mvframe/scripts/scaffold-app.js --force
173
173
 
174
+ # 不修改 package.json(仅生成源码与配置):
175
+ node /path/to/mvframe/scripts/scaffold-app.js --no-package-json
176
+
174
177
  # 安装 mvframe 后:
175
178
  yarn exec mvframe-init-app
176
179
  # 或:npx mvframe-init-app
package/README.md CHANGED
@@ -163,13 +163,16 @@ Production uses **library mode** with entry `src/index.js` and obfuscation-relat
163
163
 
164
164
  ## CLI: project skeleton
165
165
 
166
- From an **empty folder or existing Vite root**, generates `src/views`, `src/component`, `src/api`, `src/assets/img`, `src/assets/style`, `src/router`, `src/pinia/chip`, `src/config`, plus starter `main.js` / `App.vue` with `app.use(mvframe, …)` (routes, Pinia `storeChips`, config). Adds `index.html` and `vite.config.js` only if missing (use `--force` to overwrite).
166
+ From an **empty folder or existing Vite root**, generates `src/views`, `src/component`, `src/api`, `src/assets/img`, `src/assets/style`, `src/router`, `src/pinia/chip`, `src/config`, plus starter `main.js` / `App.vue` with `app.use(mvframe, …)` (routes, Pinia `storeChips`, config). Adds `index.html` and `vite.config.js` only if missing (use `--force` to overwrite). **Merges** `dependencies` / `devDependencies` into `package.json` (existing versions win for shared keys); use `--no-package-json` to skip. Then run **`yarn install`**.
167
167
 
168
168
  ```bash
169
169
  cd /path/to/your-app
170
170
  node /path/to/mvframe/scripts/scaffold-app.js
171
171
  node /path/to/mvframe/scripts/scaffold-app.js --force
172
172
 
173
+ # Skip package.json (only scaffold sources + Vite config):
174
+ node /path/to/mvframe/scripts/scaffold-app.js --no-package-json
175
+
173
176
  yarn exec mvframe-init-app
174
177
  # or: npx mvframe-init-app
175
178
  ```
package/dist/vendor.js CHANGED
@@ -63,7 +63,7 @@ const _ = /* @__PURE__ */ Object.assign({ "../component/BtnGroup/index.vue": v,
63
63
  }, w = {
64
64
  name: "Matt Avias Frame",
65
65
  copyright: "©2026",
66
- version: "1.0.5",
66
+ version: "1.0.6",
67
67
  author: "Matt Avias",
68
68
  date: "2026-02-26",
69
69
  /** Table 等表格默认;业务在 app.use(mvframe, { config }) 里覆盖 */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mvframe",
3
3
  "packageManager": "yarn@4.4.1",
4
- "version": "1.0.5",
4
+ "version": "1.0.6",
5
5
  "author": "matt avis",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
@@ -7,12 +7,15 @@
7
7
  * yarn exec mvframe-init-app
8
8
  *
9
9
  * 环境变量:MVFRAME_SCAFFOLD_TARGET=/path/to/project
10
+ *
11
+ * 选项:--no-package-json 不读不写 package.json(仅生成源码与 Vite 配置)
10
12
  */
11
13
 
12
14
  const fs = require("fs");
13
15
  const path = require("path");
14
16
 
15
17
  const FORCE = process.argv.includes("--force");
18
+ const NO_PKG = process.argv.includes("--no-package-json");
16
19
  const argPath = process.argv.find(
17
20
  (a, i) => i >= 2 && a !== "--force" && !a.startsWith("--"),
18
21
  );
@@ -31,6 +34,67 @@ function write(rel, content) {
31
34
  console.log("[mvframe-init] 写入", rel);
32
35
  }
33
36
 
37
+ /** 与 main.js / vite.config 模板一致;版本号与 mvframe 本仓库对齐思路,可随发布调整 */
38
+ const SCAFFOLD_DEPENDENCIES = {
39
+ vue: "^3.5.0",
40
+ "vue-router": "^4.6.0",
41
+ pinia: "^3.0.0",
42
+ mvframe: "^1.0.0",
43
+ "element-plus": "^2.13.0",
44
+ };
45
+
46
+ const SCAFFOLD_DEV_DEPENDENCIES = {
47
+ vite: "^6.0.0",
48
+ "@vitejs/plugin-vue": "^5.2.0",
49
+ "sass-embedded": "^1.97.0",
50
+ "unplugin-auto-import": "^0.18.2",
51
+ };
52
+
53
+ /**
54
+ * 合并 package.json:保留原有字段与其它依赖;仅补足脚手架所需包。
55
+ * 同名依赖以目标项目已有版本为准({ ...建议, ...已有 })。
56
+ */
57
+ function mergePackageJson(projectRoot) {
58
+ const pkgPath = path.join(projectRoot, "package.json");
59
+ let pkg;
60
+
61
+ if (fs.existsSync(pkgPath)) {
62
+ try {
63
+ pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
64
+ } catch (e) {
65
+ console.warn("[mvframe-init] package.json 解析失败,跳过合并:", e.message);
66
+ return;
67
+ }
68
+ } else {
69
+ pkg = {
70
+ name: path.basename(projectRoot).replace(/[^a-z0-9-]/gi, "-").toLowerCase() || "mvframe-app",
71
+ version: "0.1.0",
72
+ private: true,
73
+ type: "module",
74
+ scripts: {
75
+ dev: "vite",
76
+ build: "vite build",
77
+ preview: "vite preview",
78
+ },
79
+ };
80
+ console.log("[mvframe-init] 新建 package.json");
81
+ }
82
+
83
+ pkg.dependencies = {
84
+ ...SCAFFOLD_DEPENDENCIES,
85
+ ...(pkg.dependencies && typeof pkg.dependencies === "object" ? pkg.dependencies : {}),
86
+ };
87
+ pkg.devDependencies = {
88
+ ...SCAFFOLD_DEV_DEPENDENCIES,
89
+ ...(pkg.devDependencies && typeof pkg.devDependencies === "object"
90
+ ? pkg.devDependencies
91
+ : {}),
92
+ };
93
+
94
+ fs.writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`, "utf8");
95
+ console.log("[mvframe-init] 已合并 package.json 的 dependencies / devDependencies(已有版本优先)");
96
+ }
97
+
34
98
  function main() {
35
99
  if (!fs.existsSync(target)) {
36
100
  console.error("[mvframe-init] 目录不存在:", target);
@@ -351,14 +415,17 @@ export default defineConfig({
351
415
  "MVFRAME-SCAFFOLD.md",
352
416
  `# MVFrame 雏形已生成
353
417
 
354
- ## 依赖(若尚未安装)
418
+ ## 依赖
419
+
420
+ 初始化脚本会**合并**(不整文件覆盖)\`package.json\` 的 \`dependencies\` / \`devDependencies\`:**已声明的包保留你的版本号**,仅补上缺失项。然后执行:
355
421
 
356
422
  \`\`\`bash
357
- yarn add vue vue-router pinia mvframe element-plus
358
- yarn add -D vite @vitejs/plugin-vue sass-embedded unplugin-auto-import
423
+ yarn install
359
424
  \`\`\`
360
425
 
361
- 自动生成的 \`vite.config.js\` 已包含 \`unplugin-auto-import\`(与 mvframe 一致的 vue / vue-router 自动导入);类型声明默认输出为项目根目录 \`auto-imports.d.ts\`(\`dts: true\`)。
426
+ 若需跳过对 \`package.json\` 的修改:\`node scripts/scaffold-app.js --no-package-json\`。
427
+
428
+ 自动生成的 \`vite.config.js\` 已包含 \`unplugin-auto-import\`;\`dts: true\` 时类型默认写在项目根 \`auto-imports.d.ts\`。
362
429
 
363
430
  ## 样式
364
431
 
@@ -388,7 +455,13 @@ yarn exec mvframe-install-cursor-skill
388
455
  `,
389
456
  );
390
457
 
391
- console.log("[mvframe-init] 完成。请阅读 MVFRAME-SCAFFOLD.md 并安装依赖。");
458
+ if (!NO_PKG) {
459
+ mergePackageJson(target);
460
+ }
461
+
462
+ console.log(
463
+ "[mvframe-init] 完成。请阅读 MVFRAME-SCAFFOLD.md 并在项目根执行 yarn install(或 npm install)。",
464
+ );
392
465
  }
393
466
 
394
467
  main();