如何在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
相关产品推荐
相关产品推荐

