Nix 如何将单个 NPM 包安装为独立软件?

How does Nix able to install individual NPM packages as standalone software?

警告:如果您想将 Serverless Framework 与 Nix/NixOS 一起使用,这不是这样做的方法:您最终得到的包已经过时,并且(如下所述) 它可能无论如何都行不通。见 thread on NixOS Discourse.

想尝试 Serverless via nix-shell so I looked it up,运行 命令

nix-shell -v -p nodePackages.serverless

a̶n̶d̶ i̶t̶ w̶o̶r̶k̶s̶ f̶l̶a̶w̶l̶e̶s̶s̶l̶y̶。1

是什么让这成为可能而不需要我手动安装 Node 才能 运行 npm install -g serverless(例如,node_modules 文件夹在 Nix 商店的某个地方?如果我 nix-shell 另一个 Node 包会发生什么 - 它们会共享同一个目录吗?)


[1]:它不...见this Reddit thread;可能 setuid 问题。不过仍然对幕后的东西感兴趣。

这个问题更像是一个待办事项,因为我真的很想自己弄清楚,但现在没有时间...

这是可能的,因为它是用 node2nix 打包的。这个工具生成表达式来获取各种包并将它们放在 node_modules 目录中。 事实上它并不完美,有些包需要一些额外的修复才能使它们正常工作。 node2nix 工具可以 'learn' 来自 Nixpkgs 中的 cabal2nix 集成,以提高打包质量和 Nixpkgs 开发人员体验。