@bams-app/work-cli 0.1.2 → 0.1.4

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.md CHANGED
@@ -157,58 +157,30 @@ cd work/configs && npm publish --registry=https://registry.npmjs.org/
157
157
 
158
158
  `work-cli` 与 `create` 生成的项目均以 `"*"` 声明 `@bams-app/ui-dev-server`:仓库内直接链接到
159
159
  本地包,发布后自动解析为 registry 上最新的已发布版本,无需手动改版本号。
160
+ 用户项目升级时使用 `npm i @bams-app/ui-dev-server@latest`,该命令会把声明改写为 `^x.y.z`。
160
161
 
161
162
  ## 用户项目升级
162
163
 
163
- 用户项目的 `devDependencies` 只声明 `@bams-app/ui-dev-server` 一个(`"*"`),能力包与
164
- 运行时依赖全部作为它的传递依赖解析到同一份包,提升到项目根 `node_modules`。
164
+ 用户项目只声明 `@bams-app/ui-dev-server` 一个依赖,能力包与运行时依赖全部作为它的传递依赖解析到
165
+ 同一份包,提升到项目根 `node_modules`。
165
166
 
166
- ### 为什么直接用 npm 命令带不动这些依赖
167
-
168
- 能力包在 ui-dev-server 里声明为 `"*"`,运行时依赖是普通版本范围,而项目
169
- `package-lock.json` 已把它们逐个钉死在具体版本、且仍满足声明范围,npm 便不再重新解析:
170
- `npm install` 与 `npm update @bams-app/ui-dev-server` 都不会动它们;裸 `npm update` 虽能带上,
171
- 但会重解析整棵依赖树、顺带升级其它第三方依赖。所以只能清掉它们在 lockfile 里的记录,
172
- 让 npm 重新解析。
173
-
174
- ### 升级步骤
167
+ ui-dev-server 对能力包声明的是显式版本范围(`^x.y.z`),范围随 ui-dev-server 每次发布同步更新,
168
+ 因此升级就是一条命令:
175
169
 
176
170
  ```bash
177
- # 1. ui-dev-server 的依赖清单清理 package-lock.json
178
- node -e "
179
- const fs = require('fs');
180
- const dev = JSON.parse(fs.readFileSync('node_modules/@bams-app/ui-dev-server/package.json', 'utf8'));
181
- const names = new Set([...Object.keys(dev.dependencies || {}), '@bams-app/ui-dev-server']);
182
- const lock = JSON.parse(fs.readFileSync('package-lock.json', 'utf8'));
183
- let removed = 0;
184
- for (const section of ['packages', 'dependencies']) {
185
- const container = lock[section];
186
- if (!container) continue;
187
- for (const key of Object.keys(container)) {
188
- const name = key.replace(/^.*node_modules\//, '');
189
- if (names.has(name)) { delete container[key]; removed++; }
190
- }
191
- }
192
- fs.writeFileSync('package-lock.json', JSON.stringify(lock, null, 2) + '\n');
193
- console.log('已清理', removed, '条由 ui-dev-server 提供的依赖记录');
194
- "
195
-
196
- # 2. 这些包按 ui-dev-server 声明的版本重新解析,其余依赖保持锁定不动
197
- npm install
171
+ npm i @bams-app/ui-dev-server@latest
198
172
  ```
199
173
 
200
- 清理范围必须覆盖 ui-dev-server 声明的**全部**依赖:只删 `@bams-app/*` 的话,能力包会刷新,
201
- vue / axios 等运行时依赖仍停在 lockfile 里的旧版本。
174
+ 新版本的依赖范围与 `package-lock.json` 中钉住的旧版本不再匹配,npm 会自动重新解析整套能力包,
175
+ 无需手工清理 lockfile(历史版本遗留的 `*` 范围才需要旧办法,见 git 历史)。
202
176
 
203
- 只想升 ui-dev-server 本身、不在意它带的依赖时,直接 `npm i @bams-app/ui-dev-server@latest`。
204
- 跨大版本(0.1 → 0.2)先改 `package.json` 为 `"^0.2.0"`,再执行上面的两步。
177
+ 跨大版本(0.1 0.2)同理,直接执行上面的命令即可。
205
178
 
206
179
  ### 前提
207
180
 
208
- - 升级前确保对应版本已发布:`"*"` 只解析 registry 上已发布的版本。
181
+ - 升级前确保对应版本已发布:能力包与 ui-dev-server 由 `yarn publish-all` 同批次发布。
209
182
  - registry 指向:`create` 不生成项目 `.npmrc`,`@bams-app/*` 默认走官方 npm
210
- (registry.npmjs.org);仅在内网隔离、必须走私服时,才在项目 `.npmrc` 手动加
211
- `@bams-app:registry=https://npm.hedpy.cn/`(私服若存在同名旧版本,会遮蔽官方新版)。
183
+ (切私服需在执行 `create` 时指定 registry)。
212
184
 
213
185
  ## 环境要求
214
186
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bams-app/work-cli",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "BAMS-Work 全局开发工具:复用 work 已发布的包(create-env / create-ui-*)提供项目初始化、组件创建与环境配置能力,开发调试由用户项目本地的 ui-dev-server 承担",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -13,12 +13,12 @@
13
13
  "templates"
14
14
  ],
15
15
  "dependencies": {
16
- "@bams-app/create-env": "*",
17
- "@bams-app/create-pages-entry": "*",
18
- "@bams-app/create-pages-from-components": "*",
19
- "@bams-app/create-ui-base": "*",
20
- "@bams-app/create-ui-component": "*",
21
- "@bams-app/create-ui-page": "*"
16
+ "@bams-app/create-env": "^0.1.3",
17
+ "@bams-app/create-pages-entry": "^0.1.3",
18
+ "@bams-app/create-pages-from-components": "^0.1.3",
19
+ "@bams-app/create-ui-base": "^0.1.3",
20
+ "@bams-app/create-ui-component": "^0.1.3",
21
+ "@bams-app/create-ui-page": "^0.1.3"
22
22
  },
23
23
  "engines": {
24
24
  "node": ">=16.7.0"
@@ -1,8 +1,54 @@
1
+ # DEMO Environment (complete config)
2
+ # ==================== 编译时变量(构建配置用,修改后需重启 dev server 或重新打包) ====================
3
+ # 运行环境:development/production
1
4
  NODE_ENV=development
5
+ # 开发服务器端口(以 PROXY_TARGET 端口为基准,建议保持一致)
2
6
  PORT=8700
7
+ # 开发代理目标地址(vue.config.dev.js 中使用,端口号为基准)
3
8
  PROXY_TARGET=http://192.168.7.11:8700
9
+ # 应用基础路径
4
10
  BASE_URL=/
11
+ # 可配置组件插槽:登录页使用的组件(完整包名),例如 @bams-app/ui-login-component
12
+ COMPONENT_LOGIN=@bams-app/ui-login-component
13
+ # 可配置组件插槽:应用布局使用的组件(完整包名),例如 @bams-app/ui-startr-layout-component
14
+ COMPONENT_STARTR_LAYOUT=@bams-app/ui-startr-layout-component
5
15
 
16
+ # ==================== 编译注入 / 运行时读取变量 ====================
17
+ # 应用标题:用于浏览器标签页显示
6
18
  VUE_APP_TITLE=BAMS组件开发环境
19
+ # WebSocket 服务地址(用于实时消息推送),配置后自动进行连接,示例:/energy-ws
20
+ VUE_APP_WEBSOCKET_URL=
21
+ # 登录页面地址,外部登录页面地址,必须支持回调参数,默认走路由/login
22
+ VUE_APP_LOGIN_URL=
23
+ # 登录公钥(用于登录密码加密)
24
+ VUE_APP_LOGIN_PUBLIC_KEY=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCPaHixlk2lAHJLVHcKxKsaxyP/oJUTmkFDCAdyKPMGurxjZWGeCj9Y2OciTlZXjhi1NTjliTPtWNVq6zM2bjMcU09jW+vcP7MmHGLzaA4Klv+SCYhDdxZ83ienPN9o8D5u8f+pKLrhe12yIcXHvyKFLisiBbQCcHzwOzXkVMN1UwIDAQAB
25
+ # 系统编码:用于标识不同的业务系统,登录时传给后台接口
7
26
  VUE_APP_SYS_CODE=bams-apex
27
+ # 系统名称:用于在界面上显示的系统名称
8
28
  VUE_APP_SYS_NAME=BAMS组件开发示例
29
+ # 显示头部:设置为 true 显示startr应用头部,否则隐藏
30
+ VUE_APP_SHOW_HEADER=true
31
+ # DevExtreme 组件库许可证密钥,用于在应用中使用DevExtreme组件库
32
+ VUE_APP_DEVEXTREME_LICENSE_KEY=
33
+ # 主题功能开关:设置为 true 启用,不设置或其他值禁用
34
+ VUE_APP_ENABLE_THEME=true
35
+ # 默认主题模式:light | dark | auto,留空使用默认值 light
36
+ VUE_APP_THEME_MODE=
37
+ # 默认主题色:material.blue | material.teal | material.purple | material.lime | material.orange,留空使用默认值 material.blue
38
+ VUE_APP_THEME_PRESET=
39
+ # i18n 国际化功能开关:设置为 true 启用,不设置或其他值禁用
40
+ VUE_APP_ENABLE_I18N=true
41
+ # 版本日志功能开关:显式设置 true/1/on/yes 启用,不设置或其他值禁用
42
+ VUE_APP_ENABLE_VERSION_LOG=true
43
+ # Tabs 标签页展开/收起功能:留空不开启(默认收起);expanded 开启且默认展开;collapsed 开启且默认收起
44
+ VUE_APP_TABS_EXPAND_STATE=expanded
45
+ # 版本变化检测功能开关:显式设置 true/1/on/yes 启用版本检测,不设置或其他值禁用(默认关闭);调试模式由代码参数 debug 控制
46
+ VUE_APP_ENABLE_VERSION_CHECK=true
47
+ # 运行时环境变量功能开关:开启后应用启动时从后台接口加载当前系统的环境变量配置,运行时覆盖构建注入值,无需重新打包即可调整前端配置;显式设置 true/1/on/yes 启用,不设置或其他值禁用(默认关闭)
48
+ VUE_APP_ENABLE_RUNTIME_ENV=false
49
+ # 登录验证码功能开关:设置为 true 启用,不设置或其他值禁用
50
+ VUE_APP_ENABLE_CAPTCHA=false
51
+ # 消息告警通知开关:设置为 true 启用,不设置或其他值禁用(默认关闭)
52
+ VUE_APP_ENABLE_MESSAGE_VOICE=true
53
+ # 消息告警通知 WS 地址:留空使用默认 /message(自动补全为当前 host),本地联调可配完整地址如 ws://localhost:9090/ws
54
+ VUE_APP_MESSAGE_WS_URL=
@@ -13,6 +13,14 @@ demo-ui/ui-component-demo # 示例组件
13
13
  <scope>-ui/ui-xxx # 业务组件(add 时创建)
14
14
  ```
15
15
 
16
+ ## 前置条件(必需)
17
+
18
+ 必须先全局安装 CLI,否则 `work` 命令(`work add` / `work env` / `work pages-entry`)不可用:
19
+
20
+ ```bash
21
+ npm i -g @bams-app/work-cli
22
+ ```
23
+
16
24
  ## 开始
17
25
 
18
26
  ```bash
@@ -32,40 +40,26 @@ npm run dev:ui demo -- --port 8080 # `--` 之后透传给 vue-cli-servi
32
40
 
33
41
  ## 命令
34
42
 
35
- | 命令 | 作用 |
36
- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
37
- | `npm run dev:ui <环境标识> [组件名]` | 启动开发服务 |
43
+ | 命令 | 作用 |
44
+ | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
45
+ | `npm run dev:ui <环境标识> [组件名]` | 启动开发服务 |
38
46
  | `work add --dir <scope> --name <name> [--type component\|page\|base] [--desc ...]` | 新建组件/页面/基础组件;scope 目录不存在会自动创建并注册到根 `package.json` |
39
- | `work env` | 交互式生成 `.envs/.env.dev-<标识>` |
40
- | `work pages-entry --dir <scope> --type page\|component` | 生成构建用动态入口(内部使用) |
41
- | `work pages-from-components --dir <scope>` | 把 `ui-*` 批量复制为 `page-*` |
47
+ | `work env` | 交互式生成 `.envs/.env.dev-<标识>` |
48
+ | `work pages-entry --dir <scope> --type page\|component` | 生成构建用动态入口(内部使用) |
49
+ | `work pages-from-components --dir <scope>` | 把 `ui-*` 批量复制为 `page-*` |
42
50
 
43
51
  环境文件字段:`PORT`、`PROXY_TARGET`、`BASE_URL`、`VUE_APP_*` 等,见模板文件;改完重跑 `dev:ui` 生效。
44
52
 
45
53
  ## 依赖升级
46
54
 
47
55
  项目只声明 `@bams-app/ui-dev-server`,能力包与 vue、devextreme 等运行时依赖都由它提供并提升到根 `node_modules`。
56
+ ui-dev-server 对能力包声明的是显式版本范围(`^x.y.z`),范围随它每次发布同步更新,因此升级就是一条命令:
48
57
 
49
58
  ```bash
50
- npm i @bams-app/ui-dev-server@latest # 只换 ui-dev-server
59
+ npm i @bams-app/ui-dev-server@latest
51
60
  ```
52
61
 
53
- lockfile 会把 ui-dev-server 提供的包逐个钉死;要连带刷新这些包,先清理记录再安装:
54
-
55
- ```bash
56
- node -e "
57
- const fs=require('fs');
58
- const dev=JSON.parse(fs.readFileSync('node_modules/@bams-app/ui-dev-server/package.json','utf8'));
59
- const names=new Set([...Object.keys(dev.dependencies||{}),'@bams-app/ui-dev-server']);
60
- const lock=JSON.parse(fs.readFileSync('package-lock.json','utf8'));
61
- let n=0;
62
- for(const s of ['packages','dependencies']){const c=lock[s];if(!c)continue;
63
- for(const k of Object.keys(c))if(names.has(k.replace(/^.*node_modules\//,''))){delete c[k];n++}}
64
- fs.writeFileSync('package-lock.json',JSON.stringify(lock,null,2)+'\n');
65
- console.log('已清理',n,'条');
66
- "
67
- npm install
68
- ```
62
+ 新范围与 `package-lock.json` 中钉住的旧版本不再匹配,npm 会自动重新解析整套能力包,无需手工清理 lockfile。
69
63
 
70
64
  全局 CLI 升级:`npm i -g @bams-app/work-cli@latest`。
71
65