如何使用“node2nix”设置NPM命令行标志?
正在尝试安装Puppeter,但由于安装过程试图从那里下载最新的Chromium二进制文件,由于一些如何使用“node2nix”设置NPM命令行标志?,npm,nix,Npm,Nix,正在尝试安装Puppeter,但由于安装过程试图从那里下载最新的Chromium二进制文件,由于一些storage.googleapis.com安全限制,它一直失败。在研究了许多相关的GitHub问题(、)之后,唯一有效的方法是在使用非Nix安装的npm时设置npm的命令行标志 我在和的node2nix--help输出中找不到关于如何指定附加值的任何内容。(我忽略了什么吗?) 在中找到以下参数,其中的npmFlags参数默认为空字符串: # Builds and composes an NP
storage.googleapis.com
安全限制,它一直失败。在研究了许多相关的GitHub问题(、)之后,唯一有效的方法是在使用非Nix安装的npm
时设置npm
的命令行标志
我在和的node2nix--help
输出中找不到关于如何指定附加值的任何内容。(我忽略了什么吗?)
在中找到以下参数,其中的npmFlags
参数默认为空字符串:
# Builds and composes an NPM package including all its dependencies
buildNodePackage =
{ name
, packageName
, version
, dependencies ? []
, buildInputs ? []
, production ? true
, npmFlags ? ""
, dontNpmInstall ? false
, bypassCache ? false
, reconstructLock ? false
, preRebuild ? ""
, dontStrip ? true
, unpackPhase ? "true"
, buildPhase ? "true"
, ... }@args:
如果需要重写此
npmFlags
,我将如何执行此操作?最终的Nix表达式取决于node2nix
用例(和),但好的是需要重写同一组Nix表达式:
node2nix
在任何一种情况下都将生成三个文件:
节点环境nix
定义可重写的Nix表达式。后两个参数中都有
npmFlags
属性节点包.nix
定义枚举所有依赖项的lambda,并返回属性集
- 的属性集包含
(通过tarball
进行源代码归档)buildNodeSourceList
(通过package
构建项目)和buildNodePackage
(通过shell
为项目设置开发环境)buildNodeShell
- 中返回的属性集包含从输入列表(通常位于
中)通过节点packages.json
生成的包的名称buildNodePackage
默认.nix
导入节点packages.nix
,并调用导入的lambda,返回上述两个属性集之一node2nix
自述文件中提到的覆盖输入属性集:
{pkgs ? import <nixpkgs> {
inherit system;
}, system ? builtins.currentSystem}:
let
nodePackages = import ./default.nix {
inherit pkgs system;
};
in
nodePackages // {
# use case 1
# ==========
# shell = nodePackages.shell.override {
# package = nodePackages.package.override {
# use case 2
# ==========
aPackageName = nodePackages.aPackageName.override {
npmFlags = "--unsafe-perm=true";
};
}
{pkgs?导入{
继承制度;
},system?内置。currentSystem}:
让
nodePackages=import./default.nix{
继承pkgs系统;
};
在里面
节点包//{
#用例1
# ==========
#shell=nodePackages.shell.override{
#package=nodePackages.package.override{
#用例2
# ==========
aPackageName=nodePackages.aPackageName.override{
npmFlags=“--unsafe perm=true”;
};
}
注意:最后,这并没有解决我的
木偶演员问题,但这确实解决了