···428429In case you are patching `package.json` or `pnpm-lock.yaml`, make sure to pass `finalAttrs.patches` to the function as well (i.e. `inherit (finalAttrs) patches`.
430431-`pnpm.configHook` supports adding additional `pnpm install` flags via `pnpmInstallFlags` which can be set to a Nix string array.
0000000000000000000432433#### Dealing with `sourceRoot` {#javascript-pnpm-sourceRoot}
434···459460#### PNPM Workspaces {#javascript-pnpm-workspaces}
461462-If you need to use a PNPM workspace for your project, then set `pnpmWorkspace = "<workspace project name>"` in your `pnpm.fetchDeps` call,
463-which will make PNPM only install dependencies for that workspace package.
464465For example:
466467```nix
468...
469-pnpmWorkspace = "@astrojs/language-server";
470pnpmDeps = pnpm.fetchDeps {
471- inherit (finalAttrs) pnpmWorkspace;
472 ...
473}
474```
···476The above would make `pnpm.fetchDeps` call only install dependencies for the `@astrojs/language-server` workspace package.
477Note that you do not need to set `sourceRoot` to make this work.
478479-Usually in such cases, you'd want to use `pnpm --filter=$pnpmWorkspace build` to build your project, as `npmHooks.npmBuildHook` probably won't work. A `buildPhase` based on the following example will probably fit most workspace projects:
480481```nix
482buildPhase = ''
···428429In case you are patching `package.json` or `pnpm-lock.yaml`, make sure to pass `finalAttrs.patches` to the function as well (i.e. `inherit (finalAttrs) patches`.
430431+`pnpm.configHook` supports adding additional `pnpm install` flags via `pnpmInstallFlags` which can be set to a Nix string array:
432+433+```nix
434+{
435+ pnpm,
436+}:
437+438+stdenv.mkDerivation (finalAttrs: {
439+ pname = "foo";
440+ version = "0-unstable-1980-01-01";
441+442+ src = ...;
443+444+ pnpmInstallFlags = [ "--shamefully-hoist" ];
445+446+ pnpmDeps = pnpm.fetchDeps {
447+ inherit (finalAttrs) pnpmInstallFlags;
448+ };
449+})
450+```
451452#### Dealing with `sourceRoot` {#javascript-pnpm-sourceRoot}
453···478479#### PNPM Workspaces {#javascript-pnpm-workspaces}
480481+If you need to use a PNPM workspace for your project, then set `pnpmWorkspaces = [ "<workspace project name 1>" "<workspace project name 2>" ]`, etc, in your `pnpm.fetchDeps` call,
482+which will make PNPM only install dependencies for those workspace packages.
483484For example:
485486```nix
487...
488+pnpmWorkspaces = [ "@astrojs/language-server" ];
489pnpmDeps = pnpm.fetchDeps {
490+ inherit (finalAttrs) pnpmWorkspaces;
491 ...
492}
493```
···495The above would make `pnpm.fetchDeps` call only install dependencies for the `@astrojs/language-server` workspace package.
496Note that you do not need to set `sourceRoot` to make this work.
497498+Usually in such cases, you'd want to use `pnpm --filter=<pnpm workspace name> build` to build your project, as `npmHooks.npmBuildHook` probably won't work. A `buildPhase` based on the following example will probably fit most workspace projects:
499500```nix
501buildPhase = ''
+4-2
maintainers/scripts/rebuild-amount.sh
···81 # could eat too much memory for a standard 4GiB machine.
82 local -a list
83 for i in 1 2; do
84- local l="$($MKTEMP)"
085 list[$i]="$l"
86 toRemove+=("$l")
8788- local expr="$($MKTEMP)"
089 toRemove+=("$expr")
90 nixexpr "${!i}" > "$expr"
91
···81 # could eat too much memory for a standard 4GiB machine.
82 local -a list
83 for i in 1 2; do
84+ local l
85+ l="$($MKTEMP)"
86 list[$i]="$l"
87 toRemove+=("$l")
8889+ local expr
90+ expr="$($MKTEMP)"
91 toRemove+=("$expr")
92 nixexpr "${!i}" > "$expr"
93
···2223 pnpm config set store-dir "$STORE_PATH"
2425- echo "Installing dependencies"
26-27 if [[ -n "$pnpmWorkspace" ]]; then
28- pnpmInstallFlags+=("--filter=$pnpmWorkspace")
029 fi
00000000030 runHook prePnpmInstall
3132 pnpm install \
···2223 pnpm config set store-dir "$STORE_PATH"
240025 if [[ -n "$pnpmWorkspace" ]]; then
26+ echo "'pnpmWorkspace' is deprecated, please migrate to 'pnpmWorkspaces'."
27+ exit 2
28 fi
29+30+ echo "Installing dependencies"
31+ if [[ -n "$pnpmWorkspaces" ]]; then
32+ local IFS=" "
33+ for ws in $pnpmWorkspaces; do
34+ pnpmInstallFlags+=("--filter=$ws")
35+ done
36+ fi
37+38 runHook prePnpmInstall
3940 pnpm install \
···1273 yacc = throw "'yacc' has been renamed to/replaced by 'bison'"; # Converted to throw 2024-10-17
1274 yafaray-core = libyafaray; # Added 2022-09-23
1275 yi = throw "'yi' has been removed, as it was broken and unmaintained"; # added 2024-05-09
01276 yrd = throw "'yrd' has been removed, as it was broken and unmaintained"; # added 2024-05-27
12771278 ### Z ###
···1273 yacc = throw "'yacc' has been renamed to/replaced by 'bison'"; # Converted to throw 2024-10-17
1274 yafaray-core = libyafaray; # Added 2022-09-23
1275 yi = throw "'yi' has been removed, as it was broken and unmaintained"; # added 2024-05-09
1276+ youtrack_2022_3 = throw "'youtrack_2022_3' has been removed as it was deprecated. Please update to the 'youtrack' package."; # Added 2024-10-17
1277 yrd = throw "'yrd' has been removed, as it was broken and unmaintained"; # added 2024-05-27
12781279 ### Z ###