Node.js: Difference between revisions
Cleanup page |
Add override nodejs app example |
||
| Line 272: | Line 272: | ||
v16.17.1 | v16.17.1 | ||
</pre> | </pre> | ||
=== Override NodeJS package === | |||
Overriding a Nix package which is based on ''buildNpmPackage'' can be challeging because not only the source hash has to get changed but sometimes also the ''package-lock.json'' file and the ''npmDepsHash''. | |||
Unfortunately it is not possible to directly access and change ''npmDepsHash'' inside ''overrideAttrs'', so this is an example workaround for changing the version, ''package-lock.json'' and hashes of the package ''eslint'':<syntaxhighlight lang="nix"> | |||
environment.systemPackages = [ | |||
(eslint.overrideAttrs (oldAttrs: rec { | |||
version = "8.57.0"; | |||
src = fetchFromGitHub { | |||
owner = "eslint"; | |||
repo = "eslint"; | |||
rev = "refs/tags/v${version}"; | |||
hash = "sha256-nXlS+k8FiN7rbxhMmRPb3OplHpl+8fWdn1nY0cjL75c="; | |||
}; | |||
postPatch = '' | |||
cp ${./package-lock.json} package-lock.json | |||
''; | |||
npmDepsHash = "sha256-DiXgAD0PvIIBxPAsdU8OOJIyvYI0JyPqu6sj7XN94hE="; | |||
npmDeps = pkgs.fetchNpmDeps { | |||
src = lib.fileset.toSource { | |||
root = ./.; | |||
fileset = lib.fileset.unions [ | |||
./package-lock.json | |||
./package.json | |||
]; | |||
}; | |||
name = "eslint-${version}-npm-deps"; | |||
hash = npmDepsHash; | |||
}; | |||
})) | |||
]; | |||
</syntaxhighlight> | |||
== External Links == | == External Links == | ||