From 81eae9627a771b9d2c856d928567fdd4b0b7ac3f Mon Sep 17 00:00:00 2001 From: Tw93 Date: Thu, 14 Aug 2025 11:41:05 +0800 Subject: [PATCH] :sparkles: Update pnpm package management usage --- .github/workflows/pake_build_single_app.yaml | 21 +++++++++++++++----- .github/workflows/quality-and-test.yml | 13 ++++++++---- Dockerfile | 11 +++++----- rollup.config.js | 16 ++++++++++++--- 4 files changed, 44 insertions(+), 17 deletions(-) diff --git a/.github/workflows/pake_build_single_app.yaml b/.github/workflows/pake_build_single_app.yaml index 2f5dbb0..6ad70f6 100644 --- a/.github/workflows/pake_build_single_app.yaml +++ b/.github/workflows/pake_build_single_app.yaml @@ -71,6 +71,17 @@ jobs: toolchain: ${{ matrix.rust }} target: ${{ matrix.target }} + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: latest + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: "pnpm" + - name: Install dependencies (ubuntu only) if: matrix.os == 'ubuntu-latest' uses: awalsh128/cache-apt-pkgs-action@v1.4.3 @@ -97,13 +108,13 @@ jobs: NAME_ZH: ${{ inputs.name_zh }} URL: ${{ inputs.url }} run: | - npm install - npm run build:config + pnpm install --frozen-lockfile + pnpm run build:config - name: Build for Ubuntu if: matrix.os == 'ubuntu-latest' run: | - npm run tauri build + pnpm run tauri build mkdir -p output/linux mv src-tauri/target/release/bundle/deb/*.deb output/linux/${{inputs.title}}_`arch`.deb mv src-tauri/target/release/bundle/appimage/*.AppImage output/linux/"${{inputs.title}}"_`arch`.AppImage @@ -113,14 +124,14 @@ jobs: run: | rustup target add aarch64-apple-darwin rustup target add x86_64-apple-darwin - npm run tauri build -- --target universal-apple-darwin + pnpm run tauri build -- --target universal-apple-darwin mkdir -p output/macos mv src-tauri/target/universal-apple-darwin/release/bundle/dmg/*.dmg output/macos/"${{inputs.title}}".dmg - name: Build for Windows if: matrix.os == 'windows-latest' run: | - npm run tauri build -- --target x86_64-pc-windows-msvc + pnpm run tauri build -- --target x86_64-pc-windows-msvc New-Item -Path "output\windows" -ItemType Directory Move-Item -Path "src-tauri\target\x86_64-pc-windows-msvc\release\bundle\msi\*.msi" -Destination "output\windows\${{inputs.title}}_x64.msi" diff --git a/.github/workflows/quality-and-test.yml b/.github/workflows/quality-and-test.yml index ff348b0..b0dcf59 100644 --- a/.github/workflows/quality-and-test.yml +++ b/.github/workflows/quality-and-test.yml @@ -94,11 +94,16 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: Install pnpm + uses: pnpm/action-setup@v4 + with: + version: latest + - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22 - cache: "npm" + cache: "pnpm" - name: Install Rust (Ubuntu) if: matrix.os == 'ubuntu-latest' @@ -129,13 +134,13 @@ jobs: version: 1.1 - name: Install dependencies - run: npm install + run: pnpm install --frozen-lockfile - name: Build CLI - run: npm run cli:build + run: pnpm run cli:build - name: Run CLI Test Suite - run: npm test + run: pnpm test env: CI: true NODE_ENV: test diff --git a/Dockerfile b/Dockerfile index bf87360..2b7839d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -33,10 +33,11 @@ RUN --mount=type=cache,target=/var/cache/apt \ libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev \ gnome-video-effects -# Install Node.js 20.x +# Install Node.js 20.x and pnpm RUN --mount=type=cache,target=/var/cache/apt \ curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ - apt-get update && apt-get install -y nodejs + apt-get update && apt-get install -y nodejs && \ + npm install -g pnpm # Copy project files COPY . /pake @@ -48,9 +49,9 @@ COPY --from=cargo-builder /cargo-cache/git /usr/local/cargo/git COPY --from=cargo-builder /cargo-cache/registry /usr/local/cargo/registry # Install dependencies and build pake-cli -RUN --mount=type=cache,target=/root/.npm \ - npm install && \ - npm run cli:build +RUN --mount=type=cache,target=/root/.pnpm \ + pnpm install --frozen-lockfile && \ + pnpm run cli:build # Set up the entrypoint WORKDIR /output diff --git a/rollup.config.js b/rollup.config.js index 8a3d2c2..d7da4f3 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -46,6 +46,14 @@ function pakeCliDevPlugin() { let devHasStarted = false; + // 智能检测包管理器 + const detectPackageManager = () => { + const fs = require("fs"); + if (fs.existsSync("pnpm-lock.yaml")) return "pnpm"; + if (fs.existsSync("yarn.lock")) return "yarn"; + return "npm"; + }; + return { name: "pake-cli-dev-plugin", buildEnd() { @@ -66,9 +74,11 @@ function pakeCliDevPlugin() { console.log(chalk.yellow(`cli running end with code: ${code}`)); if (devHasStarted) return; devHasStarted = true; - devChildProcess = await exec( - "npm run tauri dev -- --config ./src-tauri/.pake/tauri.conf.json --features cli-build", - ); + + const packageManager = detectPackageManager(); + const command = `${packageManager} run tauri dev -- --config ./src-tauri/.pake/tauri.conf.json --features cli-build`; + + devChildProcess = await exec(command); devChildProcess.stdout.on("data", (data) => { console.log(chalk.green(data.toString()));