尝试安装Puppeteer,但由于storage.googleapis.com
的安全限制,安装过程一直失败,因为安装过程试图从那里下载最新的Chromium二进制文件。在查看了许多相关的GitHub问题(1,2,3)后,唯一有效的方法是在使用非Nix安装的npm
时设置npm
的--unsafe-perm=true
命令行标志。
我在main node2nix
README和node2nix --help
输出中找不到任何关于如何指定附加NPM command line flags的内容。(我忽略了什么吗?)
在node2nix
source中找到以下buildNodePackage
lambda,其中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
需要被覆盖,我该怎么做呢?
1条答案
按热度按时间ee7vknir1#
最终的Nix表达式取决于
node2nix
用例(1和2),但好的方面是需要覆盖同一组Nix表达式:node2nix
将在两种情况下生成三个文件:1.
node-env.nix
定义
buildNodeSourceDist
、buildNodePackage
和buildNodeShell
可重写的Nix表达式。后两者的参数中都有npmFlags
属性。1.一个月七个月一个月
定义枚举所有相依性的Lambda,并传回属性集。
tarball
(通过buildNodeSourceDist
制作源归档)package
(通过buildNodePackage
构建项目),以及shell
(通过buildNodeShell
为项目设置开发环境)buildNodePackage
构建的包的名称,这些包来自输入列表(通常位于node-packages.json
中)。1.**
default.nix
**汇入node-packages.nix
,并呼叫汇入的Lambda,传回上述两个属性集的其中一个。要指定标志,可以使用
node2nix
自述文件中提到的示例覆盖输入属性集: