@bams-app/work-cli 0.0.2 → 0.0.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 +6 -4
- package/bin/work-cli.js +4 -1
- package/commands/add.js +3 -1
- package/commands/create.js +10 -4
- package/package.json +1 -1
- package/templates/project/.envs/.env.dev-demo +7 -3
- package/templates/project/.envs/README.md +17 -10
- package/templates/project/.npmrc.tpl +2 -0
- package/templates/project/README.md +21 -5
- package/templates/project/package.json +2 -0
package/README.md
CHANGED
|
@@ -16,8 +16,10 @@ BAMS-Work 全局开发工具(类似 vue-cli 模式),提供**项目初始
|
|
|
16
16
|
| 批量页面创建 | `@bams-app/create-pages-from-components`(批量将 ui-* 转为 page-*,复用 create-ui-page) |
|
|
17
17
|
| 公共配置 | `@bams-app/configs`(app-config.json、可配置组件插槽默认值,被 ui-dev-server 与 store 依赖) |
|
|
18
18
|
|
|
19
|
-
- `create` 生成 **scope 目录模式** Monorepo:根 `workspaces: ["bams-components/*", "*-ui/*", "bams-ui"]`,
|
|
19
|
+
- `create` 生成 **scope 目录模式** Monorepo:根 `workspaces: ["demo-ui/*", "bams-components/*", "*-ui/*", "apex-web/*", "bams-ui"]`,
|
|
20
20
|
业务组件按 scope 目录存放(`energy-ui/ui-xxx`)。
|
|
21
|
+
- `workspaces` 与仓库根 `package.json` 保持一致:`bams-components/*`、`apex-web/*` 等 glob 用于兼容
|
|
22
|
+
用户克隆进项目的既有组件包仓库(目录不存在时不影响安装,`create` 也不会默认创建它们)。
|
|
21
23
|
- 项目根 `package.json` 只声明 `@bams-app/ui-dev-server` 与能力包,**不声明任何外部运行时依赖**;
|
|
22
24
|
项目模板 `.npmrc` 配置 `install-links=true`,`npm install` 时以复制方式安装 `file:` 链接的包
|
|
23
25
|
并解析其全部传递依赖(vue、ant-design-vue 等随能力包自动安装)。
|
|
@@ -56,11 +58,11 @@ flowchart LR
|
|
|
56
58
|
|
|
57
59
|
```
|
|
58
60
|
用户项目(Monorepo,scope 目录模式)
|
|
59
|
-
├── package.json # workspaces: bams-components/*、*-ui/*、bams-ui
|
|
61
|
+
├── package.json # workspaces: demo-ui/*、bams-components/*、*-ui/*、apex-web/*、bams-ui
|
|
60
62
|
├── .bams-work/ # BAMS-Work 项目标记目录(勿删除)
|
|
61
63
|
├── .envs/.env.dev-<env> # 环境变量
|
|
62
64
|
├── .proxy.js # 自定义代理(可选)
|
|
63
|
-
├──
|
|
65
|
+
├── demo-ui/ # 默认组件 scope
|
|
64
66
|
│ └── ui-component-demo # 示例组件
|
|
65
67
|
└── energy-ui/ # 业务 scope 目录
|
|
66
68
|
└── ui-order-list
|
|
@@ -93,7 +95,7 @@ bams-work umd ui-order-list
|
|
|
93
95
|
# 在 scope 目录下创建新组件
|
|
94
96
|
bams-work add --dir energy-ui --name ui-order-list
|
|
95
97
|
bams-work add --dir energy-ui --name page-order-list --type page
|
|
96
|
-
bams-work add --dir
|
|
98
|
+
bams-work add --dir demo-ui --name ui-base-btn --type base
|
|
97
99
|
|
|
98
100
|
# 升级 @bams-app 包(查询最新版并重装依赖)
|
|
99
101
|
bams-work update
|
package/bin/work-cli.js
CHANGED
package/commands/add.js
CHANGED
|
@@ -101,11 +101,13 @@ async function main(args) {
|
|
|
101
101
|
process.exit(1);
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
// 先校验组件类型并解析 create-ui-* 入口,校验不通过时不应留下任何副作用
|
|
105
|
+
const createBin = resolveCreateBin(type);
|
|
106
|
+
|
|
104
107
|
// 将 scope 目录注册到项目 workspaces
|
|
105
108
|
ensureWorkspaceScope(projectRoot, scopeDir);
|
|
106
109
|
|
|
107
110
|
// 委托对应 create-ui-* 包(复用 work 的模板与命令)
|
|
108
|
-
const createBin = resolveCreateBin(type);
|
|
109
111
|
|
|
110
112
|
const binArgs = [
|
|
111
113
|
'--dir', path.resolve(projectRoot, scopeDir),
|
package/commands/create.js
CHANGED
|
@@ -85,7 +85,7 @@ function createDemoComponent(targetDir) {
|
|
|
85
85
|
process.execPath,
|
|
86
86
|
[
|
|
87
87
|
createComponentBin,
|
|
88
|
-
'--dir', path.join(targetDir, '
|
|
88
|
+
'--dir', path.join(targetDir, 'demo-ui'),
|
|
89
89
|
'--name', 'ui-component-demo',
|
|
90
90
|
'--desc', 'componentDemo',
|
|
91
91
|
'--no-install'
|
|
@@ -140,9 +140,15 @@ async function main(args) {
|
|
|
140
140
|
// 1. 拷贝项目模板
|
|
141
141
|
copyDir(PROJECT_TEMPLATE_DIR, targetDir);
|
|
142
142
|
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
143
|
+
const tplRenames = [
|
|
144
|
+
['gitignore.tpl', '.gitignore'],
|
|
145
|
+
['.npmrc.tpl', '.npmrc']
|
|
146
|
+
];
|
|
147
|
+
for (const [from, to] of tplRenames) {
|
|
148
|
+
const tplPath = path.join(targetDir, from);
|
|
149
|
+
if (fs.existsSync(tplPath)) {
|
|
150
|
+
fs.renameSync(tplPath, path.join(targetDir, to));
|
|
151
|
+
}
|
|
146
152
|
}
|
|
147
153
|
|
|
148
154
|
// 2. 生成 .bams-work 标记目录(findProjectRoot 定位项目根)
|
package/package.json
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
# 开发环境(示例),可复制为 .env.dev-<标识> 使用
|
|
2
|
-
#
|
|
2
|
+
#
|
|
3
|
+
# ⚠ PROXY_TARGET 必须填写真实的后端服务地址,禁止填写 127.0.0.1 / localhost。
|
|
4
|
+
# 当 PROXY_TARGET 指向本机(即 dev server 自身端口)时会形成代理自环,
|
|
5
|
+
# /bams-assets、/admin-api 等前缀的请求会返回 431,Vue 等全局库加载失败导致页面白屏。
|
|
6
|
+
# 端口约定:PORT 与 PROXY_TARGET 的端口保持一致,首次使用请按实际后端地址修改。
|
|
3
7
|
NODE_ENV=development
|
|
4
|
-
PORT=
|
|
5
|
-
PROXY_TARGET=http://
|
|
8
|
+
PORT=8700
|
|
9
|
+
PROXY_TARGET=http://192.168.7.11:8700
|
|
6
10
|
BASE_URL=/
|
|
7
11
|
|
|
8
12
|
VUE_APP_TITLE=BAMS组件开发环境
|
|
@@ -9,16 +9,23 @@
|
|
|
9
9
|
|
|
10
10
|
## 关键变量
|
|
11
11
|
|
|
12
|
-
| 变量名 | 说明
|
|
13
|
-
| ------------------------- |
|
|
14
|
-
| `PROXY_TARGET` |
|
|
15
|
-
| `PORT` | 开发服务器端口,需与代理目标端口一致
|
|
16
|
-
| `BASE_URL` | 应用基础路径
|
|
17
|
-
| `VUE_APP_TITLE` | 浏览器标签页标题
|
|
18
|
-
| `VUE_APP_SYS_CODE` | 系统编码
|
|
19
|
-
| `COMPONENT_LOGIN` | 登录组件包名(可配置插槽)
|
|
20
|
-
| `COMPONENT_STARTR_LAYOUT` | 布局组件包名(可配置插槽)
|
|
21
|
-
| `VUE_APP_*` | 注入前端代码的编译变量(勿存放敏感信息)
|
|
12
|
+
| 变量名 | 说明 |
|
|
13
|
+
| ------------------------- | ---------------------------------------------------- |
|
|
14
|
+
| `PROXY_TARGET` | 开发代理目标地址(真实后端服务主机,禁止写本机地址) |
|
|
15
|
+
| `PORT` | 开发服务器端口,需与代理目标端口一致 |
|
|
16
|
+
| `BASE_URL` | 应用基础路径 |
|
|
17
|
+
| `VUE_APP_TITLE` | 浏览器标签页标题 |
|
|
18
|
+
| `VUE_APP_SYS_CODE` | 系统编码 |
|
|
19
|
+
| `COMPONENT_LOGIN` | 登录组件包名(可配置插槽) |
|
|
20
|
+
| `COMPONENT_STARTR_LAYOUT` | 布局组件包名(可配置插槽) |
|
|
21
|
+
| `VUE_APP_*` | 注入前端代码的编译变量(勿存放敏感信息) |
|
|
22
|
+
|
|
23
|
+
> ⚠️ **`PROXY_TARGET` 不要填写 `127.0.0.1` / `localhost`**
|
|
24
|
+
>
|
|
25
|
+
> 当 `PROXY_TARGET` 与开发服务器自身同地址同端口时,代理会指向自己形成自环,
|
|
26
|
+
> `/bams-assets`、`/bams-ui-umd`、`/bams-app`、`/admin-api`、`/preview` 等前缀的请求将返回
|
|
27
|
+
> **431 Request Header Fields Too Large**,Vue / Vue Router / Pinia 等全局库无法加载,
|
|
28
|
+
> 表现为**页面白屏且控制台无报错**。请填写真实后端主机,例如 `http://192.168.7.11:8700`。
|
|
22
29
|
|
|
23
30
|
## 创建新环境
|
|
24
31
|
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
# BAMS-Work Monorepo 项目
|
|
2
2
|
|
|
3
|
-
基于 `@bams-app/work-cli`
|
|
4
|
-
work 开发环境(`@bams-app/ui-dev-server`)与创建命令(`@bams-app/create-ui-*`)直接复用 work 仓库发布的 npm 包。
|
|
3
|
+
基于 `@bams-app/work-cli` 初始化的组件包开发项目
|
|
5
4
|
|
|
6
5
|
## 目录结构
|
|
7
6
|
|
|
8
7
|
```
|
|
9
8
|
.
|
|
10
|
-
├── package.json # Monorepo
|
|
9
|
+
├── package.json # Monorepo 根(见 package.json 的 workspaces)
|
|
11
10
|
├── .bams-work/ # BAMS-Work 项目标记目录,勿删除
|
|
12
11
|
├── .envs/ # 环境配置(.env.dev-<env>)
|
|
13
12
|
├── .proxy.js # 自定义开发代理(可选)
|
|
14
|
-
├──
|
|
13
|
+
├── demo-ui/ # 默认组件 scope
|
|
15
14
|
│ └── ui-component-demo # 示例组件
|
|
16
|
-
└── <scope>-ui/ #
|
|
15
|
+
└── <scope>-ui/ # 其他业务 scope 目录(如 energy-ui/,add 时创建)
|
|
17
16
|
└── ui-xxx
|
|
18
17
|
```
|
|
19
18
|
|
|
@@ -48,6 +47,23 @@ yarn install
|
|
|
48
47
|
`file:` 安装的能力包会以复制方式解析其全部传递依赖(vue、ant-design-vue 等自动安装),
|
|
49
48
|
因此 `package.json` 无需声明任何外部运行时依赖。
|
|
50
49
|
|
|
50
|
+
## 更新升级
|
|
51
|
+
|
|
52
|
+
### 1. 升级 CLI(`bams-work` 与创建命令)
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npm i -g @bams-app/work-cli@latest
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 2. 升级项目依赖
|
|
59
|
+
|
|
60
|
+
项目运行时依赖只有 `@bams-app/ui-dev-server`,其余能力包(`@bams-app/components` 等)由它传递安装。
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# 查询最新版、更新 package.json 中的 ui-dev-server 声明并重装依赖
|
|
64
|
+
bams-work update
|
|
65
|
+
```
|
|
66
|
+
|
|
51
67
|
## 环境变量
|
|
52
68
|
|
|
53
69
|
见 `.envs/README.md`。新增环境:`cp .envs/.env.dev-demo .envs/.env.dev-<标识>`。
|