Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
141 commits
Select commit Hold shift + click to select a range
2a019ed
chore: update typedoc api
mmdapl Dec 5, 2025
c3acda1
chore(release): publish v0.0.1-alpha.37
mmdapl Dec 5, 2025
b7f4086
feat(@142vip/nest): 增加`TransformUriPath`转换器
mmdapl Dec 31, 2025
90195ae
feat(@142vip/nest-typeorm): 增加`DataType`枚举,修复`dataSourceName`参数异常
mmdapl Dec 31, 2025
f927a76
feat(@142vip/utils): 引入`address`依赖,增加`getAddress`方法,支持IP地址获取
mmdapl Dec 31, 2025
a27e9f8
feat(@142vip/nest-starter): 优化`Swagger`管理器,支持多配置
mmdapl Dec 31, 2025
1058962
feat(@142vip/nest-starter): 拓展启动器通用配置,`typeorm`配置支持`MySQL`、`PG`数据库
mmdapl Dec 31, 2025
387710d
refactor(@142vip/nest-starter): 重写启动器逻辑,优化终端日志打印
mmdapl Dec 31, 2025
6849cc1
release(@142vip/utils): publish `v0.0.1-alpha.46`
mmdapl Dec 31, 2025
cd5f8f5
release(@142vip/nest-typeorm): publish `v0.0.1-alpha.2`
mmdapl Dec 31, 2025
76efe4d
release(@142vip/nest): publish `v0.0.1-alpha.4`
mmdapl Dec 31, 2025
8908206
release(@142vip/nest-starter): publish `v0.0.1-alpha.4`
mmdapl Dec 31, 2025
c6da91e
fix(@142vip/nest-typeorm): 修复`dataSourceName`参数异常,增加`@Module`装饰器
mmdapl Jan 1, 2026
e6dcecb
release(@142vip/nest-typeorm): publish `v0.0.1-alpha.3`
mmdapl Jan 1, 2026
1162837
release(@142vip/nest-starter): publish `v0.0.1-alpha.5`
mmdapl Jan 1, 2026
01407a6
fix(@142vip/nest-typeorm): 修复`NestTypeOrmModule`类继承机制,优化导出逻辑
mmdapl Jan 4, 2026
aa4cd10
fix(@142vip/nest-starter): 修改`typeorm`配置,移除`debug`参数
mmdapl Jan 4, 2026
53e9ba2
release(@142vip/nest-typeorm): publish `v0.0.1-alpha.4`
mmdapl Jan 4, 2026
5c2bc61
release(@142vip/nest-starter): publish `v0.0.1-alpha.6`
mmdapl Jan 4, 2026
5ef1cf0
feat(@142vip/nest-typeorm): 补充模块导出
mmdapl Jan 4, 2026
e0903a9
feat(@142vip/nest-starter): 优化通用模块导出
mmdapl Jan 4, 2026
e54d75d
release(@142vip/nest-typeorm): publish `v0.0.1-alpha.5`
mmdapl Jan 4, 2026
412c483
release(@142vip/nest-starter): publish `v0.0.1-alpha.7`
mmdapl Jan 4, 2026
97907d5
feat(@142vip/nest-typeorm): 修改编译配置,支持`NodeNext`编译
mmdapl Jan 4, 2026
163002e
feat(@142vip/nest-starter): 修改编译配置,支持`NodeNext`编译
mmdapl Jan 4, 2026
53c5cdf
release(@142vip/nest-typeorm): publish `v0.0.1-alpha.6`
mmdapl Jan 4, 2026
42e5ba4
release(@142vip/nest-starter): publish `v0.0.1-alpha.8`
mmdapl Jan 4, 2026
9a83221
fix(@142vip/redis): 修复.d.ts类型文件识别异常
mmdapl Jan 5, 2026
5afa90a
feat: 基于`@nestjs`生态,优化`nest`包`ts`配置
mmdapl Jan 5, 2026
eb18b14
feat(@142vip/nest): 优化ts类型和打包配置
mmdapl Jan 5, 2026
c3b28e9
feat(@142vip/nest-logger): 优化ts类型和打包配置
mmdapl Jan 5, 2026
5ecafb7
feat(@142vip/nest-redis): 优化ts类型和打包配置
mmdapl Jan 5, 2026
63af570
feat(@142vip/nest-typeorm): 优化ts类型和打包配置
mmdapl Jan 5, 2026
bd099e5
feat(@142vip/nest-typeorm): 补充`typeorm`工具类
mmdapl Jan 5, 2026
cf4ef9b
feat(@142vip/nest-starter): 优化ts类型和打包配置
mmdapl Jan 5, 2026
bdd7e7f
feat(nest-demo): 补充typeorm实战实践,简化通用配置和依赖
mmdapl Jan 5, 2026
ca7c97a
release(@142vip/redis): publish `v0.0.1-alpha.5`
mmdapl Jan 5, 2026
f959aed
release(@142vip/nest): publish `v0.0.1-alpha.5`
mmdapl Jan 5, 2026
7152f86
release(@142vip/nest-logger): publish `v0.0.1-alpha.2`
mmdapl Jan 5, 2026
8349446
release(@142vip/nest-redis): publish `v0.0.1-alpha.4`
mmdapl Jan 5, 2026
7c80e7d
release(@142vip/nest-typeorm): publish `v0.0.1-alpha.7`
mmdapl Jan 5, 2026
279909a
release(@142vip/nest-starter): publish `v0.0.1-alpha.9`
mmdapl Jan 5, 2026
d951567
release(nest-demo): publish `v0.0.1-alpha.2`
mmdapl Jan 5, 2026
0ca7886
fix(@142vip/nest): 修复`npm`包缺失`index`入口文件
mmdapl Jan 6, 2026
f3ec530
fix(@142vip/nest-logger): 修复`npm`包缺失`index`入口文件
mmdapl Jan 6, 2026
f8bd8e6
fix(@142vip/nest-redis): 修复`npm`包缺失`index`入口文件
mmdapl Jan 6, 2026
99a2b07
fix(@142vip/nest-starter): 修复`npm`包缺失`index`入口文件
mmdapl Jan 6, 2026
21449c3
fix(@142vip/nest-typeorm): 修复`npm`包缺失`index`入口文件
mmdapl Jan 6, 2026
cf56d99
feat(@142vip/nest-typeorm): 修复模块导出逻辑,支持全局模块
mmdapl Jan 6, 2026
cbd9334
feat(@142vip/nest-starter): 基于`@nestjs/typeorm`模块集成数据库
mmdapl Jan 6, 2026
bf5217f
fix(nest-demo): 修复`GET`接口参数异常
mmdapl Jan 6, 2026
6503d72
release(@142vip/nest-logger): publish `v0.0.1-alpha.3`
mmdapl Jan 6, 2026
203e56a
release(@142vip/nest-redis): publish `v0.0.1-alpha.5`
mmdapl Jan 6, 2026
ac5cc6c
release(@142vip/nest-typeorm): publish `v0.0.1-alpha.8`
mmdapl Jan 6, 2026
42b821b
release(@142vip/nest-starter): publish `v0.0.1-alpha.10`
mmdapl Jan 6, 2026
c388040
release(@142vip/nest): publish `v0.0.1-alpha.6`
mmdapl Jan 6, 2026
4b42870
release(nest-demo): publish `v0.0.1-alpha.3`
mmdapl Jan 6, 2026
4eba205
feat(@142vip/nest-starter): 支持Starter启动器类继承后,函数重写
mmdapl Jan 11, 2026
816b293
release(@142vip/nest-starter): publish `v0.0.1-alpha.11`
mmdapl Jan 11, 2026
303bb7d
feat(@142vip/nest-starter): 启动配置支持`swagger.builderOptions`选项
mmdapl Jan 20, 2026
9d5ea28
feat(@142vip/nest-starter): 初始`swagger`时,基于`extraModels`增加`Vo`模型
mmdapl Jan 20, 2026
3484574
feat(@142vip/nest-starter): 优化启动逻辑,增加通用拦截器、过滤器设置
mmdapl Jan 20, 2026
cd85bee
feat(@142vip/nest): 增加`swagger`装饰器,用于接口`Response`声明
mmdapl Jan 20, 2026
79d749c
feat(@142vip/nest): 丰富`DTO`层校验,补充入参、出参定义模型
mmdapl Jan 20, 2026
6c891d0
feat(@142vip/nest): 增加全局过滤器,通用型异常捕获
mmdapl Jan 20, 2026
c0bfcf5
feat(@142vip/nest): 增加上下文、响应拦截器,统一接口返回
mmdapl Jan 20, 2026
4168570
feat(@142vip/nest): 规范常量声明,支持元数据`Key`导出
mmdapl Jan 20, 2026
bf2290f
feat: 依赖优化,减少冗余依赖定义
mmdapl Jan 20, 2026
c802e58
fix: 修复装饰器不生效问题,`nest`包编译配置增加`useDefineForClassFields`选项
mmdapl Jan 20, 2026
a0df396
feat(@142vip/nest-starter): 修改`NestTypeOrmModule`引入方式
mmdapl Jan 20, 2026
4e0d2b2
feat(@142vip/nest): 引入`rxjs`模块,支持全局过滤器
mmdapl Jan 20, 2026
7bfb2c5
feat(@142vip/nest): 增加`ApiResponseSkip`装饰器,跳过`Swagger`和拦截器处理
mmdapl Jan 20, 2026
7779b50
feat(nest-demo): 简化示例代码,降低基础模块学习成本
mmdapl Jan 20, 2026
30d0d2c
feat: 调整侧边栏导航设置
mmdapl Jan 21, 2026
5f2cf9a
feat(@142vip/nest): 增加模块使用文档,补充实践示例
mmdapl Jan 21, 2026
5254be6
release(@142vip/nest): publish `v0.0.1-alpha.7`
mmdapl Jan 21, 2026
c13b17d
release(@142vip/nest-starter): publish `v0.0.1-alpha.12`
mmdapl Jan 21, 2026
1fc3749
release(nest-demo): publish `v0.0.1-alpha.4`
mmdapl Jan 21, 2026
747954b
chore(release): publish v0.0.1-alpha.38
mmdapl Jan 21, 2026
0c6cd3e
feat(@142vip/nest):增加`base-entity`相关`DTO`、`VO`基础类
mmdapl Jan 26, 2026
b149bae
feat(@142vip/nest): `Response`函数增加`HttpCode`装饰器逻辑
mmdapl Jan 26, 2026
b06394b
feat(@142vip/nest-starter): 引入`BaseEntityVo`等数据模型
mmdapl Jan 26, 2026
e0c5e6c
feat(nest-demo): 优化接口在`Swagger`上的显示
mmdapl Jan 26, 2026
4b89948
release(@142vip/nest): publish `v0.0.1-alpha.8`
mmdapl Jan 26, 2026
662f44e
release(@142vip/nest-starter): publish `v0.0.1-alpha.13`
mmdapl Jan 26, 2026
4a77d7d
fix(@142vip/nest): 修复分页`PaginationDto`校验逻辑异常
mmdapl Jan 28, 2026
fdac7c5
release(@142vip/nest): publish `v0.0.1-alpha.9`
mmdapl Jan 28, 2026
c38582a
fix(@142vip/nest): 分页功能返回结构修改,主体数据用records字段
mmdapl Feb 5, 2026
44692f6
feat(nest-demo): 优化rest接口,支持最新分页格式
mmdapl Feb 5, 2026
a491234
release(@142vip/nest): publish `v0.0.1-alpha.10`
mmdapl Feb 5, 2026
3ce47fa
feat(@142vip/utils): 增加`buildImage`参数,支持日志打印、镜像推送 (#773)
mmdapl Mar 24, 2026
d3835b7
release(@142vip/utils): publish `v0.0.1-alpha.47`
mmdapl Mar 24, 2026
67baf40
fix(@142vip/utils): 修复`getBase`逻辑异常
mmdapl Mar 25, 2026
4bbb611
release(@142vip/utils): publish `v0.0.1-alpha.48`
mmdapl Mar 25, 2026
1583e34
refactor(@142vip/utils): 重构`VipPackageJSON`工具类 (#774)
mmdapl Apr 22, 2026
2cd91ad
feat(@142vip/utils): 支持浏览器和服务端使用,功能隔离 (#781)
mmdapl Apr 22, 2026
52fcc29
release(@142vip/utils): publish `v0.0.1-alpha.49`
mmdapl Apr 22, 2026
48e08f1
feat(@142vip/utils): 增加`getTimestamp`方法,获取指定日期的时间戳
mmdapl Apr 25, 2026
60646f6
chore(@142vip/axios): 清理备份代码,保持代码简洁
mmdapl May 11, 2026
3ddf9ab
feat(@142vip/vitepress): 基于`element-plus`框架的组件,对`vip`相关组件代码进行改造,支持`sc…
mmdapl May 11, 2026
12555b1
fix(@142vip/vitepress): 修复暗黑模式下,组件样式不动态变化的问题
mmdapl May 11, 2026
a596c2a
fix(@142vip/vitepress): 修复类型错误引用
mmdapl May 11, 2026
67cca5e
feat(@142vip/vitepress): 新增`workspace`业务封装,支持`json`文件浏览器解析
mmdapl May 11, 2026
17cfe84
feat: 优化`HomePage`首页组件,支持同步加载表格数据
mmdapl May 11, 2026
beb0317
feat(@142vip/vitepress): `VipBackTop`组件支持参数控制底部、右侧距离
mmdapl May 11, 2026
fbd253e
feat(@142vip/vitepress): 优化`VipProjectTable`组件UI布局,支持同步加载数据,兼容移动端左右滚动表格
mmdapl May 11, 2026
b94a3a0
feat(vitepress-demo): 优化组件使用,更新最佳实践案例
mmdapl May 11, 2026
679d5fe
release(@142vip/utils): publish `v0.0.1-alpha.50`
mmdapl May 11, 2026
819e1cd
release(@142vip/axios): publish `v0.0.1-alpha.8`
mmdapl May 11, 2026
fa20471
release(@142vip/vitepress): publish `v0.0.1-alpha.20`
mmdapl May 11, 2026
d750b73
release(nest-demo): publish `v0.0.1-alpha.5`
mmdapl May 11, 2026
8641180
release(vitepress-demo): publish `v0.0.1-alpha.6`
mmdapl May 11, 2026
72da24f
chore(release): publish v0.0.1-alpha.39
mmdapl May 11, 2026
64012a4
fix: 修复首页表格布局异常,增加顶部间距
mmdapl May 12, 2026
7ac3a46
chore(@142vip/vitepress): 调整宣发文案
mmdapl May 12, 2026
a56704d
fix(@142vip/utils): 忽略process的校验规则
mmdapl Jun 8, 2026
4b4d3df
feat(@142vip/axios): 新增默认配置、配置创建函数,升级依赖 (#799)
mmdapl Jun 8, 2026
41f8705
ci: 修改流水线配置,支持使用`Trusted Publisher`发布包
mmdapl Jun 16, 2026
46005af
feat: 增加`npm-trust`脚本,支持批量管理NPM包
mmdapl Jun 16, 2026
5e386b2
release(@142vip/axios): publish `v0.0.1-alpha.9`
mmdapl Jun 16, 2026
eeeac95
ci: 修改流水线配置,支持手动指定包名触发流水线
mmdapl Jun 16, 2026
c7f48f0
feat: 增加`npm-release`脚本,支持本地进行`npm`包发布
mmdapl Jun 16, 2026
756ae9d
release(@142vip/utils): publish `v0.0.1-alpha.51`
mmdapl Jun 16, 2026
85e9f71
fix: 修复流水线异常,升级流水线Node版本到22.10.0
mmdapl Jun 17, 2026
8fe15df
build: 升级ci脚本,支持corepack自动安装
mmdapl Jun 17, 2026
b8d73fa
release(@142vip/vitepress): publish `v0.0.1-alpha.21`
mmdapl Jun 17, 2026
4c75258
chore(release): publish v0.0.1-alpha.40
mmdapl Jun 17, 2026
751ea1d
feat(@142vip/vitepress): 增加`@142vip/cdn`依赖,解决外链、图标显示异常
mmdapl Jun 24, 2026
e829cb6
release(@142vip/vitepress): publish `v0.0.1-alpha.22`
mmdapl Jun 24, 2026
3b3a88e
feat(@142vip/data-source): 移除`clickhouse`模块,替换为`@clickhouse/client`模块…
mmdapl Jun 24, 2026
0b01d4c
fix(@142vip/utils): 修复`getBase`校验环境变量异常
mmdapl Jun 24, 2026
7548efa
release(@142vip/utils): publish `v0.0.1-alpha.52`
mmdapl Jun 24, 2026
45af9b5
feat(@142vip/axios): 增加随机`use-agent`等值,提供获取函数
mmdapl Jun 29, 2026
504d652
release(@142vip/axios): publish `v0.0.1-alpha.10`
mmdapl Jun 29, 2026
e9ccf79
fix(@142vip/nest-typeorm): 修复typeorm连接实例异常,固定包版本
mmdapl Jun 30, 2026
8b56cbb
release(@142vip/nest-typeorm): publish `v0.0.1-alpha.10`
mmdapl Jun 30, 2026
8e3df8f
release(@142vip/nest-starter): publish `v0.0.1-alpha.14`
mmdapl Jul 1, 2026
9c5a096
feat(@142vip/nest): 升级nest框架版本,固定最新版
mmdapl Jul 1, 2026
2897a81
fix(@142vip/nest-starter): 修复dist文件引入导致的编译错误
mmdapl Jul 1, 2026
ecc165c
release(@142vip/nest): publish `v0.0.1-alpha.11`
mmdapl Jul 1, 2026
98fc9c8
release(@142vip/nest-starter): publish `v0.0.1-alpha.15`
mmdapl Jul 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
79 changes: 60 additions & 19 deletions .github/workflows/CD.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,44 @@ on:
push:
branches:
- next
- ci-test
- fix/cd
workflow_dispatch:
inputs:
package:
description: 要发布的 npm 包(手动触发时必选)
required: true
type: choice
options:
- '@142vip/axios'
- '@142vip/changelog'
- '@142vip/commit-linter'
- '@142vip/copyright'
- '@142vip/data-source'
- '@142vip/egg'
- '@142vip/egg-axios'
- '@142vip/egg-grpc-client'
- '@142vip/egg-grpc-server'
- '@142vip/egg-mysql'
- '@142vip/egg-redis'
- '@142vip/egg-sequelize'
- '@142vip/egg-swagger'
- '@142vip/egg-validate'
- '@142vip/eslint-config'
- '@142vip/fairy-cli'
- '@142vip/grpc'
- '@142vip/nest'
- '@142vip/nest-logger'
- '@142vip/nest-redis'
- '@142vip/nest-starter'
- '@142vip/nest-typeorm'
- '@142vip/oauth2.0'
- '@142vip/open-source'
- '@142vip/redis'
- '@142vip/release-version'
- '@142vip/typeorm'
- '@142vip/utils'
- '@142vip/vitepress'
- '@142vip/vuepress'

# 设置 GITHUB_TOKEN 的权限,以允许部署到 GitHub Pages
permissions:
Expand All @@ -27,7 +63,7 @@ jobs:
name: 创建Github发布
runs-on: ubuntu-latest
# 主库next且执行release更新时执行
if: github.repository == '142vip/core-x' && startsWith(github.event.head_commit.message, 'chore(release):')
if: github.event_name == 'push' && github.repository == '142vip/core-x' && startsWith(github.event.head_commit.message, 'chore(release):')

steps:
- name: Checkout Code
Expand All @@ -46,7 +82,7 @@ jobs:
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20.12.2
node-version: 22.10.0
# 缓存
cache: pnpm

Expand All @@ -69,8 +105,10 @@ jobs:
npm-release:
name: 创建npm发布
runs-on: ubuntu-latest
# 主库next且执行release更新时执行
if: github.repository == '142vip/core-x' && startsWith(github.event.head_commit.message, 'release(@142vip/')
# push: release(@scope/pkg) 提交;workflow_dispatch: 手动选择包发版
if: |
(github.event_name == 'workflow_dispatch' && github.event.inputs.package != '') ||
(github.event_name == 'push' && startsWith(github.event.head_commit.message, 'release(@'))

steps:
- name: Checkout Code
Expand All @@ -90,7 +128,7 @@ jobs:
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20.12.2
node-version: 22.10.0
# npm包上传地址,用于注册,参考:https://github.com/actions/setup-node
registry-url: 'https://registry.npmjs.org'
# 缓存
Expand All @@ -105,23 +143,26 @@ jobs:
# run: |
# pnpm build:packages

- name: Get Package Name By Commit Scope
- name: Resolve Package Name
id: getPkgName
# 这里使用正则截取scope,获取包名
run: |
SCOPE=$(echo "${{ github.event.head_commit.message }}" | grep -o '@[^):]*')
echo "name=$SCOPE" >> $GITHUB_OUTPUT
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "name=${{ github.event.inputs.package }}" >> "$GITHUB_OUTPUT"
else
SCOPE=$(echo "${{ github.event.head_commit.message }}" | grep -o '@[^):]*' | head -1)
echo "name=${SCOPE}" >> "$GITHUB_OUTPUT"
fi

- name: Use Package Name
run: |
echo "The pkgName is: ${{ steps.getPkgName.outputs.name }}"

# Npm 版本发布 注意:只发布packages中的模块
- name: Upgrade npm for OIDC trusted publishing
run: npm i -g npm@^11.10

# OIDC 发布:须在 npm 各包上配置 Trusted Publisher(见 scripts/npm-trust)
- name: Publish New Npm Version
run: |
pnpm publish --filter "${{ steps.getPkgName.outputs.name }}"
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
run: pnpm publish --filter "${{ steps.getPkgName.outputs.name }}"

# 构建并部署Dist
deploy-dist:
Expand All @@ -130,8 +171,8 @@ jobs:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
# todo 确定这里的触发条件
if: github.repository == '142vip/core-x'
# 仅 push 到 next/fix/cd 时部署文档,手动发版 npm 不触发
if: github.event_name == 'push' && github.repository == '142vip/core-x'
steps:
# 拉取代码
- name: Checkout
Expand All @@ -149,7 +190,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20.12.2
node-version: 22.10.0
cache: pnpm

- name: Setup Pages
Expand Down Expand Up @@ -190,7 +231,7 @@ jobs:
name: 部署到Github Wiki
runs-on: ubuntu-latest
# 主库next且执行release更新时执行
if: github.repository == '142vip/core-x' && startsWith(github.event.head_commit.message, 'chore(release):')
if: github.event_name == 'push' && github.repository == '142vip/core-x' && startsWith(github.event.head_commit.message, 'chore(release):')
steps:
- name: Checkout Code
uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20.12.2
node-version: 22.10.0
# 缓存
cache: pnpm

Expand Down
94 changes: 13 additions & 81 deletions .vitepress/sidebar.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import type { SidebarConfig, VipPackageJSON, VipProject } from '@142vip/vitepress'
import { defineVipSidebarConfig } from '@142vip/vitepress'
import { defineVipSidebarConfig, SidebarConfig } from '@142vip/vitepress'

enum ProjectId {
BUSINESS = '商业代码',
export enum ProjectId {
BUSINESS = '商业模块',
TOOLS = '通用工具',
EGG = 'Egg.js框架',
NEST = 'Nest.js框架',
BLOG = '博客工具',
INFRA = '工程化',
DEMO = '演示Demo',
DEMO = '最佳实践',
}

/**
Expand All @@ -21,6 +20,15 @@ export const sidebarConfig = defineVipSidebarConfig([
{ text: '@142vip/data-source', link: '/packages/data-source/index.md' },
],
},
{
text: `🎮 ${ProjectId.DEMO}`,
items: [
{ text: 'egg-demo', link: '/apps/egg-demo/index.md' },
{ text: 'nest-demo', link: '/apps/nest-demo/index.md' },
{ text: 'vitepress-demo', link: '/apps/vitepress-demo/index.md' },
{ text: 'vuepress-demo', link: '/apps/vuepress-demo/index.md' },
],
},
{
text: `🏆 ${ProjectId.INFRA}`,
items: [
Expand Down Expand Up @@ -75,84 +83,8 @@ export const sidebarConfig = defineVipSidebarConfig([
{ text: '@142vip/vuepress', link: '/packages/vuepress/index.md' },
],
},
{
text: `🎮 ${ProjectId.DEMO}`,
items: [
{ text: 'egg-demo', link: '/apps/egg-demo/index.md' },
{ text: 'nest-demo', link: '/apps/nest-demo/index.md' },
{ text: 'vitepress-demo', link: '/apps/vitepress-demo/index.md' },
{ text: 'vuepress-demo', link: '/apps/vuepress-demo/index.md' },
],
},
])

/**
* 获取基本包信息
* - 注意目录格式,例如:@packages/utils
* @vite-ignore
*/
async function getBasePkgJSON(pkgDirName: string): Promise<VipPackageJSON> {
// 参考格式:@packages/xxx @apps/xxx
return await import(`@packages/${pkgDirName}/package.json`)
}

/**
* 获取apps目录下的模块
* - @apps/vitepress-demo
*/
async function getAppsPkgJSON(pkgDirName: string): Promise<VipPackageJSON> {
// 参考格式:@packages/xxx @apps/xxx
return await import(`@apps/${pkgDirName}/package.json`)
}

/**
* 动态获取模块信息
* - 注意:遍历侧边栏
*/
export async function getCoreProjectData(): Promise<VipProject[]> {
const coreProjects: VipProject[] = []
for (const { items = [], text = '' } of sidebarConfig) {
// 过滤掉apps下的模块
if (text?.includes(ProjectId.DEMO)) {
continue
}
for (const { text: pkgName = '' } of items) {
const pkgDirName = pkgName.split('@142vip/')[1]
const basePkg = await getBasePkgJSON(`${pkgDirName}`)
coreProjects.push({
...basePkg,
// 约定:图标+文字
id: text.split(' ')[0],
changelog: `../changelogs/${pkgDirName}/changelog.html`,
readme: `../packages/${pkgDirName}/index.html`,
sourceCode: `https://github.com/142vip/core-x/tree/main/packages/${pkgDirName}/`,
})
}
}
return coreProjects
}

/**
* demo项目,用于项目展示
*/
export async function getExampleDemoTableData(): Promise<VipProject[]> {
const pkgNames = ['egg-demo', 'nest-demo', 'vuepress-demo', 'vitepress-demo']

const exampleDemos: VipProject[] = []
for (const pkgDirName of pkgNames) {
const pkg = await getAppsPkgJSON(`${pkgDirName}`)
exampleDemos.push({
...pkg,
private: true,
id: '🤡',
changelog: `../changelogs/${pkgDirName}/changelog.html`,
readme: `../apps/${pkgDirName}/index.html`,
sourceCode: `https://github.com/142vip/core-x/tree/main/apps/${pkgDirName}/`,
})
}
return exampleDemos
}

/**
* 根据侧边栏获取变更日志侧边栏
*/
Expand Down
23 changes: 10 additions & 13 deletions .vitepress/theme/components/HomePage.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,15 @@ import {
VipProjectTable,
VipTeam,
} from '@142vip/vitepress/components'
import { onMounted, ref } from 'vue'
import { getCoreProjectData, getExampleDemoTableData } from '../../sidebar'
import { getCoreProjectData, getExampleDemoTableData } from './project-data'

const coreProjectTableData = ref<any[]>([])
const exampleDemoTableData = ref()

/**
* 异步加载表格数据
*/
onMounted(async () => {
coreProjectTableData.value = await getCoreProjectData()
exampleDemoTableData.value = await getExampleDemoTableData()
})
const exampleDemoTableData = getExampleDemoTableData()
const coreProjectTableData = getCoreProjectData()
</script>

<!-- 首页 -->
<template>
<section id="version-table">
<section id="project-table">
<VipProjectTable :data="exampleDemoTableData" title="最佳实践" />
<VipProjectTable :data="coreProjectTableData" title="开源模块" />
</section>
Expand All @@ -38,3 +29,9 @@ onMounted(async () => {
</section>
<VipBackTop />
</template>

<style lang="scss" scoped>
#project-table {
margin: 30px auto;
}
</style>
50 changes: 50 additions & 0 deletions .vitepress/theme/components/project-data.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import type { VipProject } from '@142vip/vitepress'
import { resolveWorkspacePackageMaps } from '@142vip/vitepress/workspace'
import { ProjectId, sidebarConfig } from '../../sidebar'

const { packagesByDir, appsByDir } = resolveWorkspacePackageMaps(
import.meta.glob('../../../packages/*/package.json', { eager: true }),
import.meta.glob('../../../apps/*/package.json', { eager: true }),
)

const DEMO_APP_DIRS = ['egg-demo', 'nest-demo', 'vuepress-demo', 'vitepress-demo'] as const

export function getCoreProjectData(): VipProject[] {
const rows: VipProject[] = []
for (const { items = [], text = '' } of sidebarConfig) {
if (text.includes(ProjectId.DEMO))
continue
for (const { text: pkgName = '' } of items) {
const dir = pkgName.split('@142vip/')[1]
const base = dir ? packagesByDir[dir] : undefined
if (!base)
continue
rows.push({
...base,
id: text.split(' ')[0],
changelog: `../changelogs/${dir}/changelog.html`,
readme: `../packages/${dir}/index.html`,
sourceCode: `https://github.com/142vip/core-x/tree/main/packages/${dir}/`,
})
}
}
return rows
}

export function getExampleDemoTableData(): VipProject[] {
const rows: VipProject[] = []
for (const dir of DEMO_APP_DIRS) {
const pkg = appsByDir[dir]
if (!pkg)
continue
rows.push({
...pkg,
private: true,
id: '🤡',
changelog: `../changelogs/${dir}/changelog.html`,
readme: `../apps/${dir}/index.html`,
sourceCode: `https://github.com/142vip/core-x/tree/main/apps/${dir}/`,
})
}
return rows
}
Loading