Refactor build and release workflows, update dependencies

Switch build scripts and workflows from npm to pnpm, update build and artifact paths, and simplify release workflow by removing version detection and changelog steps. Add new dependencies (silk-wasm, express, ws, node-pty-prebuilt-multiarch), update exports in package.json files, and add vite config for napcat-framework. Also, rename manifest.json for framework package and fix static asset copying in shell build config.
This commit is contained in:
手瓜一十雪 2025-11-13 15:39:20 +08:00
parent c9c6942564
commit 7c8e825eba
9 changed files with 161 additions and 142 deletions

View File

@ -1,6 +1,9 @@
name: "Build Action"
on:
workflow_dispatch:
push:
branches:
- main
permissions: write-all
@ -16,14 +19,16 @@ jobs:
node-version: 20.x
- name: Build NapCat.Framework
run: |
npm i && cd napcat.webui && npm i && cd .. || exit 1
npm run build:framework && npm run depend || exit 1
rm package-lock.json
pnpm i
pnpm --filter napcat-webui-frontend run build || exit 1
pnpm run build:framework
cd packages/napcat-framework/dist
pnpm install --production
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: NapCat.Framework
path: dist
path: packages/napcat-framework/dist
Build-Shell:
runs-on: ubuntu-latest
steps:
@ -35,11 +40,13 @@ jobs:
node-version: 20.x
- name: Build NapCat.Shell
run: |
npm i && cd napcat.webui && npm i && cd .. || exit 1
npm run build:shell && npm run depend || exit 1
rm package-lock.json
pnpm i
pnpm --filter napcat-webui-frontend run build || exit 1
pnpm run build:shell
cd packages/napcat-shell/dist
pnpm install --production
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: NapCat.Shell
path: dist
path: packages/napcat-shell/dist

View File

@ -1,153 +1,82 @@
name: "Build Release"
on:
push:
tags:
- "v*"
workflow_dispatch:
permissions: write-all
jobs:
check-version:
Build-LiteLoader:
runs-on: ubuntu-latest
steps:
- name: Clone Repository
- name: Clone Main Repository
uses: actions/checkout@v4
with:
ref: main
token: ${{ secrets.GITHUB_TOKEN }}
- name: Extract version from tag
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV
- name: Use Node.js 20.X
uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Check Version
- name: Build NapCat.Framework
run: |
ls
node ./script/checkVersion.cjs
sh ./checkVersion.sh
Build-LiteLoader:
needs: [check-version]
runs-on: ubuntu-latest
steps:
- name: Clone Main Repository
uses: actions/checkout@v4
with:
repository: 'NapNeko/NapCatQQ'
submodules: true
ref: main
token: ${{ secrets.NAPCAT_BUILD }}
- name: Use Node.js 20.X
uses: actions/setup-node@v4
with:
node-version: 20.x
pnpm i
pnpm --filter napcat-webui-frontend run build || exit 1
pnpm run build:framework
cd packages/napcat-framework/dist
pnpm install --production
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: NapCat.Framework
path: packages/napcat-framework/dist
- name: Build NuCat Framework
run: |
npm i
cd napcat.webui
npm i
cd ..
npm run build:framework
cd dist
npm i --omit=dev
cd ..
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: NapCat.Framework
path: dist
Build-Shell:
runs-on: ubuntu-latest
needs: [check-version]
steps:
- name: Clone Main Repository
uses: actions/checkout@v4
with:
repository: 'NapNeko/NapCatQQ'
submodules: true
ref: main
token: ${{ secrets.NAPCAT_BUILD }}
- name: Use Node.js 20.X
uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Build NuCat Shell
run: |
npm i
cd napcat.webui
npm i
cd ..
npm run build:shell
cd dist
npm i --omit=dev
cd ..
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: NapCat.Shell
path: dist
- name: Clone Main Repository
uses: actions/checkout@v4
- name: Use Node.js 20.X
uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Build NapCat.Shell
run: |
pnpm i
pnpm --filter napcat-webui-frontend run build || exit 1
pnpm run build:shell
cd packages/napcat-shell/dist
pnpm install --production
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: NapCat.Shell
path: packages/napcat-shell/dist
release-napcat:
needs: [Build-LiteLoader,Build-Shell]
needs: [Build-LiteLoader, Build-Shell]
runs-on: ubuntu-latest
steps:
- name: Download All Artifact
uses: actions/download-artifact@v4
- name: Clone Main Repository
uses: actions/checkout@v4
with:
repository: 'NapNeko/NapCatQQ'
submodules: true
ref: main
token: ${{ secrets.NAPCAT_BUILD }}
- name: Download All Artifact
uses: actions/download-artifact@v4
- name: Compress subdirectories
run: |
cd ./NapCat.Shell/
zip -q -r NapCat.Shell.zip *
cd ..
cd ./NapCat.Framework/
zip -q -r NapCat.Framework.zip *
cd ..
rm ./NapCat.Shell.zip -rf
rm ./NapCat.Framework.zip -rf
mv ./NapCat.Shell/NapCat.Shell.zip ./
mv ./NapCat.Framework/NapCat.Framework.zip ./
- name: Extract version from tag
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV
- name: Clone Changes Log
run: curl -o CHANGELOG.md https://fastly.jsdelivr.net/gh/NapNeko/NapCatQQ@main/docs/changelogs/CHANGELOG.v${{ env.VERSION }}.md
- name: Create Release Draft and Upload Artifacts
uses: softprops/action-gh-release@v1
with:
name: NapCat V${{ env.VERSION }}
token: ${{ secrets.GITHUB_TOKEN }}
body_path: CHANGELOG.md
files: |
NapCat.Framework.zip
NapCat.Shell.zip
draft: true
build-docker:
needs: release-napcat
runs-on: ubuntu-latest
steps:
- name: Dispatch Docker Build
- name: Compress subdirectories
run: |
curl -X POST \
-H "Authorization: Bearer ${{ secrets.NAPCAT_BUILD }}" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/NapNeko/NapCat-Docker/actions/workflows/docker-publish.yml/dispatches \
-d '{"ref": "main"}'
cd ./NapCat.Shell/
zip -q -r NapCat.Shell.zip *
cd ..
cd ./NapCat.Framework/
zip -q -r NapCat.Framework.zip *
cd ..
rm ./NapCat.Shell.zip -rf
rm ./NapCat.Framework.zip -rf
mv ./NapCat.Shell/NapCat.Shell.zip ./
mv ./NapCat.Framework/NapCat.Framework.zip ./
- name: Create Release Draft and Upload Artifacts
uses: softprops/action-gh-release@v1
with:
name: NapCat
token: ${{ secrets.GITHUB_TOKEN }}
body: Automated release artifact (no version detection)
files: |
NapCat.Framework.zip
NapCat.Shell.zip
draft: true

View File

@ -5,7 +5,8 @@
"version": "4.9.42",
"scripts": {
"build:shell": "pnpm --filter napcat-shell run build || exit 1",
"build:webui": "pnpm --filter napcat-webui-frontend run build"
"build:framework": "pnpm --filter napcat-framework run build || exit 1",
"build:webui": "pnpm --filter napcat-webui-frontend run build || exit 1"
},
"devDependencies": {
"@rollup/plugin-node-resolve": "^16.0.3",
@ -13,6 +14,8 @@
"vite-plugin-cp": "^6.0.3"
},
"dependencies": {
"@protobuf-ts/runtime": "^2.11.1"
"silk-wasm": "^3.6.1",
"express": "^5.0.0",
"ws": "^8.18.3"
}
}

View File

@ -4,11 +4,14 @@
"private": true,
"type": "module",
"main": "index.ts",
"scripts": {
"build": "vite build"
},
"exports": {
".": {
"import": "./index.ts"
},
"./src/*": {
"./*": {
"import": "./*"
}
},

View File

@ -0,0 +1,68 @@
import cp from 'vite-plugin-cp';
import { defineConfig, PluginOption, UserConfig } from 'vite';
import path, { resolve } from 'path';
import nodeResolve from '@rollup/plugin-node-resolve';
import { builtinModules } from 'module';
//依赖排除
const external = [
'silk-wasm',
'ws',
'express'
];
const nodeModules = [...builtinModules, builtinModules.map((m) => `node:${m}`)].flat();
const FrameworkBaseConfigPlugin: PluginOption[] = [
cp({
targets: [
{ src: '../napcat-napi-loader/', dest: 'dist', flatten: true },
{ src: '../napcat-native/', dest: 'dist/native', flatten: false },
{ src: './manifest.json', dest: 'dist' },
{ src: '../napcat-core/external/napcat.json', dest: 'dist/config/' },
{ src: '../napcat-webui-frontend/dist/', dest: 'dist/static/', flatten: false },
{ src: './liteloader.cjs', dest: 'dist' },
{ src: './napcat.cjs', dest: 'dist' },
{ src: './nativeLoader.cjs', dest: 'dist' },
{ src: './preload.cjs', dest: 'dist' },
{ src: './renderer.js', dest: 'dist' },
{ src: '../../package.json', dest: 'dist' },
{ src: '../../logo.png', dest: 'dist' },
],
}),
nodeResolve(),
];
const FrameworkBaseConfig = () =>
defineConfig({
resolve: {
conditions: ['node', 'default'],
alias: {
'@/napcat-core': resolve(__dirname, '../napcat-core'),
'@/napcat-common': resolve(__dirname, '../napcat-common/src'),
'@/napcat-onebot': resolve(__dirname, '../napcat-onebot'),
'@/napcat-pty': resolve(__dirname, '../napcat-pty'),
'@/napcat-webui-backend': resolve(__dirname, '../napcat-webui-backend/src'),
'@/image-size': resolve(__dirname, '../image-size'),
},
},
build: {
sourcemap: false,
target: 'esnext',
minify: false,
lib: {
entry: {
napcat: path.resolve(__dirname, 'napcat.ts'),
'audio-worker': path.resolve(__dirname, '../napcat-common/src/audio-worker.ts'),
'worker/conoutSocketWorker': path.resolve(__dirname, '../napcat-pty/worker/conoutSocketWorker.ts'),
},
formats: ['es'],
fileName: (_, entryName) => `${entryName}.mjs`,
},
rollupOptions: {
external: [...nodeModules, ...external],
},
},
});
export default defineConfig((): UserConfig => {
return {
...FrameworkBaseConfig(),
plugins: [...FrameworkBaseConfigPlugin],
};
});

View File

@ -13,6 +13,7 @@
}
},
"dependencies": {
"@homebridge/node-pty-prebuilt-multiarch":"^0.12.0",
"napcat-core": "workspace:*",
"napcat-common": "workspace:*",
"napcat-onebot": "workspace:*",

View File

@ -7,6 +7,14 @@
"scripts": {
"build": "vite build"
},
"exports": {
".": {
"import": "./index.ts"
},
"./*": {
"import": "./*"
}
},
"dependencies": {
"napcat-core": "workspace:*",
"napcat-common": "workspace:*",

View File

@ -16,7 +16,7 @@ const ShellBaseConfigPlugin: PluginOption[] = [
{ src: '../napcat-native/', dest: 'dist/native', flatten: false },
{ src: '../napcat-webui-frontend/dist/', dest: 'dist/static/', flatten: false },
{ src: '../napcat-core/external/napcat.json', dest: 'dist/config/' },
{ src: './package.json', dest: 'dist' },
{ src: '../../package.json', dest: 'dist' },
{ src: '../napcat-shell-loader', dest: 'dist' }
],
}),