diff --git a/doc/languages-frameworks/javascript.section.md b/doc/languages-frameworks/javascript.section.md index 0bb9959a5105b..152974b465a54 100644 --- a/doc/languages-frameworks/javascript.section.md +++ b/doc/languages-frameworks/javascript.section.md @@ -210,6 +210,7 @@ In the default `installPhase` set by `buildNpmPackage`, it uses `npm pack --json * `npmPruneFlags`: Flags to pass to `npm prune`. Defaults to the value of `npmInstallFlags`. * `makeWrapperArgs`: Flags to pass to `makeWrapper`, added to executable calling the generated `.js` with `node` as an interpreter. These scripts are defined in `package.json`. * `nodejs`: The `nodejs` package to build against, using the corresponding `npm` shipped with that version of `node`. Defaults to `pkgs.nodejs`. +* `npmDeps`: The dependencies used to build the npm package. Especially useful to not have to recompute workspace depedencies. #### prefetch-npm-deps {#javascript-buildNpmPackage-prefetch-npm-deps} diff --git a/pkgs/build-support/node/build-npm-package/default.nix b/pkgs/build-support/node/build-npm-package/default.nix index 9babc7ae62871..2aefab8ac7adf 100644 --- a/pkgs/build-support/node/build-npm-package/default.nix +++ b/pkgs/build-support/node/build-npm-package/default.nix @@ -35,16 +35,15 @@ # Value for npm `--workspace` flag and directory in which the files to be installed are found. , npmWorkspace ? null , nodejs ? topLevelArgs.nodejs +, npmDeps ? fetchNpmDeps { + inherit forceGitDeps src srcs sourceRoot prePatch patches postPatch; + name = "${name}-npm-deps"; + hash = npmDepsHash; +} , ... } @ args: let - npmDeps = fetchNpmDeps { - inherit forceGitDeps src srcs sourceRoot prePatch patches postPatch; - name = "${name}-npm-deps"; - hash = npmDepsHash; - }; - # .override {} negates splicing, so we need to use buildPackages explicitly npmHooks = buildPackages.npmHooks.override { inherit nodejs;