diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 261945bc..0fc0eb03 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8256c73d..f720edf6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -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: Build NapCat.Framework + run: | + 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: Check Version - 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 - - - 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 \ No newline at end of file diff --git a/package.json b/package.json index 6dda3ea6..4d446398 100644 --- a/package.json +++ b/package.json @@ -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" } -} +} \ No newline at end of file diff --git a/packages/napcat-liteloader/manifest.json b/packages/napcat-framework/manifest.json similarity index 100% rename from packages/napcat-liteloader/manifest.json rename to packages/napcat-framework/manifest.json diff --git a/packages/napcat-framework/package.json b/packages/napcat-framework/package.json index e5e328c4..6e0789e0 100644 --- a/packages/napcat-framework/package.json +++ b/packages/napcat-framework/package.json @@ -4,11 +4,14 @@ "private": true, "type": "module", "main": "index.ts", + "scripts": { + "build": "vite build" + }, "exports": { ".": { "import": "./index.ts" }, - "./src/*": { + "./*": { "import": "./*" } }, diff --git a/packages/napcat-framework/vite.config.ts b/packages/napcat-framework/vite.config.ts new file mode 100644 index 00000000..5bc42b58 --- /dev/null +++ b/packages/napcat-framework/vite.config.ts @@ -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], + }; +}); diff --git a/packages/napcat-pty/package.json b/packages/napcat-pty/package.json index fcc92799..591b5ff0 100644 --- a/packages/napcat-pty/package.json +++ b/packages/napcat-pty/package.json @@ -13,6 +13,7 @@ } }, "dependencies": { + "@homebridge/node-pty-prebuilt-multiarch":"^0.12.0", "napcat-core": "workspace:*", "napcat-common": "workspace:*", "napcat-onebot": "workspace:*", diff --git a/packages/napcat-shell/package.json b/packages/napcat-shell/package.json index 51701761..7df2fd00 100644 --- a/packages/napcat-shell/package.json +++ b/packages/napcat-shell/package.json @@ -7,6 +7,14 @@ "scripts": { "build": "vite build" }, + "exports": { + ".": { + "import": "./index.ts" + }, + "./*": { + "import": "./*" + } + }, "dependencies": { "napcat-core": "workspace:*", "napcat-common": "workspace:*", diff --git a/packages/napcat-shell/vite.config.ts b/packages/napcat-shell/vite.config.ts index 7aebf115..0cb96550 100644 --- a/packages/napcat-shell/vite.config.ts +++ b/packages/napcat-shell/vite.config.ts @@ -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' } ], }),