You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Nix中打包Electron应用并在NixOS快速开发npm项目

NixOS下快速开展Electron/npm开发工作
  • 临时搭建开发环境
    新建shell.nix文件,写入以下内容:

    { pkgs ? import <nixpkgs> {} }:
    pkgs.mkShell {
      buildInputs = with pkgs; [
        nodejs
        npm
        electron
        # 按需添加yarn、pnpm等包管理工具
        yarn
        pnpm
      ];
      # 可选:配置npm缓存路径,避免每次nix-shell重建缓存
      shellHook = ''
        export npm_config_cache="$HOME/.npm-cache"
      '';
    }
    

    执行nix-shell进入环境,即可直接运行npm install、electron .等开发命令。

  • 自动加载开发环境(推荐)
    先安装direnv:nix-env -i direnv,在项目目录创建.envrc文件,内容为use nix,执行direnv allow后,每次进入项目目录会自动加载shell.nix定义的环境,无需手动启动nix-shell。

在Nix中打包Electron应用

目前nixpkgs已提供完善的Electron打包支持,以下是两种常用方式:

方式一:基于nixpkgs自带的electron-packager

编写default.nix文件:

{ pkgs ? import <nixpkgs> {} }:
pkgs.stdenv.mkDerivation {
  name = "my-electron-app";
  src = ./.;
  buildInputs = with pkgs; [ electron-packager nodejs ];
  buildPhase = ''
    electron-packager "$src" MyElectronApp --platform=linux --arch=x64 --out="$out"
  '';
  installPhase = ''
    mkdir -p "$out/bin"
    ln -s "$out/MyElectronApp-linux-x64/MyElectronApp" "$out/bin/MyElectronApp"
  '';
}

执行nix-build,打包后的应用会生成在result目录,可直接运行result/bin/MyElectronApp启动。

方式二:配合electron-builder打包(适合复杂项目)

如果项目使用electron-builder,可先在shell.nix中加入该工具,在开发环境中执行electron-builder --linux生成包;也可以将打包流程封装进default.nix:

{ pkgs ? import <nixpkgs> {} }:
pkgs.stdenv.mkDerivation {
  name = "my-electron-app-builder";
  src = ./.;
  buildInputs = with pkgs; [ nodejs npm electron-builder ];
  buildPhase = ''
    npm install
    electron-builder --linux --dir
  '';
  installPhase = ''
    mkdir -p "$out/bin"
    cp -r dist/linux-unpacked/* "$out/"
    ln -s "$out/MyElectronApp" "$out/bin/MyElectronApp"
  '';
}

执行nix-build完成打包,结果同样在result目录。

内容的提问来源于stack exchange,提问作者tobiasBora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 19:15:58