nixpkgs-suyu/pkgs/applications/version-management/sourcehut/fetchNodeModules.nix
2021-01-16 17:58:11 +07:00

26 lines
728 B
Nix

{ lib, stdenv, jq }: { src, nodejs, sha256 }:
# Only npm >= 5.4.2 is deterministic, see:
# https://github.com/npm/npm/issues/17979#issuecomment-332701215
assert lib.versionAtLeast nodejs.version "8.9.0";
stdenv.mkDerivation {
name = "node_modules";
outputHashAlgo = "sha256";
outputHash = sha256;
outputHashMode = "recursive";
nativeBuildInputs = [ jq nodejs ];
buildCommand = ''
cp -r ${src}/* .
HOME=. npm install --force --ignore-scripts --only=production
for f in $(find node_modules -name package.json); do
# https://github.com/npm/npm/issues/10393
jq -S 'delpaths(keys | map(select(startswith("_")) | [.]))' $f > $f.tmp
mv $f.tmp $f
done
mv node_modules $out
'';
}