build: 迁移依赖管理至 pnpm

AI-assisted-by: Codex

AI-model: gpt-5.6-sol

AI-reasoning-effort: medium

Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
2026-08-26 23:42:53 +08:00
co-authored by Codex
parent 16ddf53186
commit 43faa05c30
20 changed files with 2622 additions and 4225 deletions
+7 -7
View File
@@ -1,6 +1,6 @@
# Linux 分发打包
MeloASR 0.1.15 的系统包由两部分组成:
MeloASR 0.1.16 的系统包由两部分组成:
- Electron 应用安装到 `/opt/meloasr`,命令入口为 `/usr/bin/meloasr`;
- Fcitx5 常驻 addon 由目标发行版中的 CMake/Fcitx5 开发包编译,并安装到该环境报告的 addon 目录。
@@ -12,7 +12,7 @@ MeloASR 0.1.15 的系统包由两部分组成:
deb、rpm 和 Arch 配置期望项目提供:
```bash
npm run build:linux:dir
pnpm run build:linux:dir
```
该命令应在 `release/linux-unpacked/` 生成可直接运行的 Electron 目录,并且主程序名必须是 `meloasr`。仓库提供的 `electron-builder.yml` 只生成这一中间目录;deb/rpm/Arch 的系统文件仍由各自脚本管理,避免用安装钩子复制未被包管理器追踪的 Fcitx5 文件。
@@ -21,7 +21,7 @@ npm run build:linux:dir
```json
{
"build:linux:dir": "npm run build && electron-builder --config packaging/electron-builder.yml --linux dir"
"build:linux:dir": "pnpm run build && electron-builder --config packaging/electron-builder.yml --linux dir"
}
```
@@ -36,18 +36,18 @@ packaging/scripts/stage-linux.sh release/linux-unpacked packaging/out/root
在 Debian/Ubuntu 对应目标环境中安装 Node.js 构建依赖、CMake、C++ 编译器、Fcitx5 开发包与 nlohmann-json 开发包,然后执行:
```bash
npm run build:linux:dir
pnpm run build:linux:dir
packaging/deb/build-deb.sh
```
产物位于 `packaging/out/meloasr_0.1.15_<arch>.deb`。依赖名称按 Debian/Ubuntu 系列填写,但尚未在各发行版完成安装验证。
产物位于 `packaging/out/meloasr_0.1.16_<arch>.deb`。依赖名称按 Debian/Ubuntu 系列填写,但尚未在各发行版完成安装验证。
## rpm
在目标 RPM 发行版中准备相同的编译依赖和 `rpmbuild`,然后执行:
```bash
npm run build:linux:dir
pnpm run build:linux:dir
packaging/rpm/build-rpm.sh
```
@@ -64,7 +64,7 @@ nix build
nix run
```
flake 使用 nixpkgs 的 Electron,Node 依赖由 `package-lock.json` 的 integrity 数据导入,不需要手写固定输出 hash。仓库首次确定发布地址后,需要锁定并提交 `flake.lock`。当前环境没有 Nix,尚未实际执行上述命令。
flake 使用 nixpkgs 的 Electron,Node 依赖由 `pnpm-lock.yaml` 和固定输出的 pnpm store 导入。仓库首次确定发布地址后,需要锁定并提交 `flake.lock`。
## 发布前必须完成
+5 -5
View File
@@ -1,12 +1,12 @@
pkgname=meloasr
pkgver=0.1.15
pkgver=0.1.16
pkgrel=1
pkgdesc='Web-backed voice input for Fcitx5'
arch=('x86_64')
url='https://github.com/Melorise/MeloASR'
license=('MPL2')
depends=('fcitx5' 'gtk3' 'nss' 'libxss' 'mesa' 'alsa-lib')
makedepends=('nodejs' 'npm' 'cmake' 'gcc' 'nlohmann-json')
makedepends=('nodejs' 'pnpm' 'cmake' 'gcc' 'nlohmann-json')
source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz")
sha256sums=('SKIP')
@@ -14,8 +14,8 @@ _source_dir="MeloASR-${pkgver}"
build() {
cd "${srcdir}/${_source_dir}"
npm ci
npm run build:linux:dir
pnpm install --frozen-lockfile
pnpm run build:linux:dir
cmake -S linux/fcitx5 -B build/fcitx5 \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr
@@ -24,7 +24,7 @@ build() {
check() {
cd "${srcdir}/${_source_dir}"
npm test
pnpm test
ctest --test-dir build/fcitx5 --output-on-failure
}
+1 -1
View File
@@ -4,7 +4,7 @@
```bash
curl --fail --location --remote-name \
https://github.com/Melorise/MeloASR/releases/download/v0.1.15/PKGBUILD
https://github.com/Melorise/MeloASR/releases/download/v0.1.16/PKGBUILD
makepkg --syncdeps --cleanbuild
```
+1
View File
@@ -16,6 +16,7 @@
<binary>meloasr</binary>
</provides>
<releases>
<release version="0.1.16" date="2026-08-26"/>
<release version="0.1.15" date="2026-08-26"/>
<release version="0.1.14" date="2026-08-26"/>
<release version="0.1.13" date="2026-08-24"/>
+1 -1
View File
@@ -2,7 +2,7 @@
set -euo pipefail
project_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)"
version="${MELOASR_VERSION:-0.1.15}"
version="${MELOASR_VERSION:-0.1.16}"
arch="${MELOASR_DEB_ARCH:-$(dpkg --print-architecture)}"
app_dir="${1:-${MELOASR_ELECTRON_APP_DIR:-${project_dir}/release/linux-unpacked}}"
work_dir="${project_dir}/packaging/out/deb-root"
+16 -12
View File
@@ -1,7 +1,9 @@
{ lib
, stdenv
, importNpmLock
, fetchPnpmDeps
, nodejs
, pnpm_11
, pnpmConfigHook
, electron
, cmake
, pkg-config
@@ -10,19 +12,26 @@
, nlohmann_json
}:
let
pnpm = pnpm_11;
in
stdenv.mkDerivation (finalAttrs: {
pname = "meloasr";
version = (builtins.fromJSON (builtins.readFile ../../package.json)).version;
src = ../..;
npmDeps = importNpmLock {
npmRoot = finalAttrs.src;
pnpmDeps = fetchPnpmDeps {
inherit (finalAttrs) pname version src;
inherit pnpm;
fetcherVersion = 4;
hash = "sha256-KoxRIhZVhshxTpl5rzzfUnaSAuGo3gCvFD2FsltN1gc=";
};
nativeBuildInputs = [
nodejs
importNpmLock.npmConfigHook
pnpm
pnpmConfigHook
cmake
pkg-config
makeWrapper
@@ -30,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [ fcitx5 nlohmann_json ];
# 保留 npmConfigHook 的 postConfigure 生命周期,但不对项目根目录运行默认 CMake 配置。
# 保留 pnpmConfigHook 的 postConfigure 生命周期,但不对项目根目录运行默认 CMake 配置。
configurePhase = ''
runHook preConfigure
runHook postConfigure
@@ -38,7 +47,7 @@ stdenv.mkDerivation (finalAttrs: {
buildPhase = ''
runHook preBuild
npm run build
pnpm run build
cmake -S linux/fcitx5 -B build/fcitx5 \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$out" \
@@ -49,7 +58,7 @@ stdenv.mkDerivation (finalAttrs: {
checkPhase = ''
runHook preCheck
npm test
pnpm test
ctest --test-dir build/fcitx5 --output-on-failure
runHook postCheck
'';
@@ -65,11 +74,6 @@ stdenv.mkDerivation (finalAttrs: {
cp package.json "$appDir/"
cp -r dist "$appDir/"
if [ -d node_modules ]; then
npm prune --omit=dev --ignore-scripts
cp -r node_modules "$appDir/"
fi
install -Dm644 packaging/assets/meloasr.desktop \
"$out/share/applications/meloasr.desktop"
install -Dm644 packaging/assets/meloasr-autostart.desktop \
+1 -1
View File
@@ -2,7 +2,7 @@
set -euo pipefail
project_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)"
version="${MELOASR_VERSION:-0.1.15}"
version="${MELOASR_VERSION:-0.1.16}"
app_dir="${1:-${MELOASR_ELECTRON_APP_DIR:-${project_dir}/release/linux-unpacked}}"
stage_dir="${project_dir}/packaging/out/rpm-root"
top_dir="${project_dir}/packaging/out/rpmbuild"
+3
View File
@@ -36,6 +36,9 @@ tar -C %{buildroot} -xzf %{SOURCE0}
/etc/xdg/autostart/meloasr.desktop
%changelog
* Wed Aug 26 2026 MeloASR contributors - 0.1.16-1
- Migrate dependency installation and build commands from npm to pnpm.
* Wed Aug 26 2026 MeloASR contributors - 0.1.15-1
- Download the Arch package source directly from the matching GitHub release tag.