@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 +11 -39
- package/package.json +7 -7
- package/templates/project/.envs/.env.dev-demo +46 -0
- package/templates/project/README.md +17 -23
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
|
-
|
|
164
|
-
|
|
164
|
+
用户项目只声明 `@bams-app/ui-dev-server` 一个依赖,能力包与运行时依赖全部作为它的传递依赖解析到
|
|
165
|
+
同一份包,提升到项目根 `node_modules`。
|
|
165
166
|
|
|
166
|
-
|
|
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
|
-
|
|
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
|
-
|
|
201
|
-
|
|
174
|
+
新版本的依赖范围与 `package-lock.json` 中钉住的旧版本不再匹配,npm 会自动重新解析整套能力包,
|
|
175
|
+
无需手工清理 lockfile(历史版本遗留的 `*` 范围才需要旧办法,见 git 历史)。
|
|
202
176
|
|
|
203
|
-
|
|
204
|
-
跨大版本(0.1 → 0.2)先改 `package.json` 为 `"^0.2.0"`,再执行上面的两步。
|
|
177
|
+
跨大版本(0.1 → 0.2)同理,直接执行上面的命令即可。
|
|
205
178
|
|
|
206
179
|
### 前提
|
|
207
180
|
|
|
208
|
-
-
|
|
181
|
+
- 升级前确保对应版本已发布:能力包与 ui-dev-server 由 `yarn publish-all` 同批次发布。
|
|
209
182
|
- registry 指向:`create` 不生成项目 `.npmrc`,`@bams-app/*` 默认走官方 npm
|
|
210
|
-
|
|
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.
|
|
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`
|
|
40
|
-
| `work pages-entry --dir <scope> --type page\|component`
|
|
41
|
-
| `work pages-from-components --dir <scope>`
|
|
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
|
|
59
|
+
npm i @bams-app/ui-dev-server@latest
|
|
51
60
|
```
|
|
52
61
|
|
|
53
|
-
|
|
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
|
|