mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-11-13 09:17:07 +03:00
Merge pull request #233804 from lilyinstarlight/feature/npm-workspaces
buildNpmPackage: add npmWorkspace and npmPruneFlags args
This commit is contained in:
commit
43b091f45c
@ -196,12 +196,14 @@ buildNpmPackage rec {
|
||||
* `npmDepsHash`: The output hash of the dependencies for this project. Can be calculated in advance with [`prefetch-npm-deps`](#javascript-buildNpmPackage-prefetch-npm-deps).
|
||||
* `makeCacheWritable`: Whether to make the cache writable prior to installing dependencies. Don't set this unless npm tries to write to the cache directory, as it can slow down the build.
|
||||
* `npmBuildScript`: The script to run to build the project. Defaults to `"build"`.
|
||||
* `npmWorkspace`: The workspace directory within the project to build and install.
|
||||
* `dontNpmBuild`: Option to disable running the build script. Set to `true` if the package does not have a build script. Defaults to `false`. Alternatively, setting `buildPhase` explicitly also disables this.
|
||||
* `dontNpmInstall`: Option to disable running `npm install`. Defaults to `false`. Alternatively, setting `installPhase` explicitly also disables this.
|
||||
* `npmFlags`: Flags to pass to all npm commands.
|
||||
* `npmInstallFlags`: Flags to pass to `npm ci` and `npm prune`.
|
||||
* `npmInstallFlags`: Flags to pass to `npm ci`.
|
||||
* `npmBuildFlags`: Flags to pass to `npm run ${npmBuildScript}`.
|
||||
* `npmPackFlags`: Flags to pass to `npm pack`.
|
||||
* `npmPruneFlags`: Flags to pass to `npm prune`. Defaults to the value of `npmInstallFlags`.
|
||||
|
||||
#### prefetch-npm-deps {#javascript-buildNpmPackage-prefetch-npm-deps}
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
, npmBuildScript ? "build"
|
||||
# Flags to pass to all npm commands.
|
||||
, npmFlags ? [ ]
|
||||
# Flags to pass to `npm ci` and `npm prune`.
|
||||
# Flags to pass to `npm ci`.
|
||||
, npmInstallFlags ? [ ]
|
||||
# Flags to pass to `npm rebuild`.
|
||||
, npmRebuildFlags ? [ ]
|
||||
@ -30,6 +30,10 @@
|
||||
, npmBuildFlags ? [ ]
|
||||
# Flags to pass to `npm pack`.
|
||||
, npmPackFlags ? [ ]
|
||||
# Flags to pass to `npm prune`.
|
||||
, npmPruneFlags ? npmInstallFlags
|
||||
# Value for npm `--workspace` flag and directory in which the files to be installed are found.
|
||||
, npmWorkspace ? null
|
||||
, ...
|
||||
} @ args:
|
||||
|
||||
|
@ -14,7 +14,7 @@ npmBuildHook() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! npm run "$npmBuildScript" $npmBuildFlags "${npmBuildFlagsArray[@]}" $npmFlags "${npmFlagsArray[@]}"; then
|
||||
if ! npm run ${npmWorkspace+--workspace=$npmWorkspace} "$npmBuildScript" $npmBuildFlags "${npmBuildFlagsArray[@]}" $npmFlags "${npmFlagsArray[@]}"; then
|
||||
echo
|
||||
echo 'ERROR: `npm build` failed'
|
||||
echo
|
||||
|
@ -13,8 +13,8 @@ npmInstallHook() {
|
||||
while IFS= read -r file; do
|
||||
local dest="$packageOut/$(dirname "$file")"
|
||||
mkdir -p "$dest"
|
||||
cp "$file" "$dest"
|
||||
done < <(@jq@ --raw-output '.[0].files | map(.path) | join("\n")' <<< "$(npm pack --json --dry-run $npmPackFlags "${npmPackFlagsArray[@]}" $npmFlags "${npmFlagsArray[@]}")")
|
||||
cp "${npmWorkspace-.}/$file" "$dest"
|
||||
done < <(@jq@ --raw-output '.[0].files | map(.path) | join("\n")' <<< "$(npm pack --json --dry-run ${npmWorkspace+--workspace=$npmWorkspace} $npmPackFlags "${npmPackFlagsArray[@]}" $npmFlags "${npmFlagsArray[@]}")")
|
||||
|
||||
while IFS=" " read -ra bin; do
|
||||
mkdir -p "$out/bin"
|
||||
@ -22,13 +22,13 @@ npmInstallHook() {
|
||||
done < <(@jq@ --raw-output '(.bin | type) as $typ | if $typ == "string" then
|
||||
.name + " " + .bin
|
||||
elif $typ == "object" then .bin | to_entries | map(.key + " " + .value) | join("\n")
|
||||
else "invalid type " + $typ | halt_error end' package.json)
|
||||
else "invalid type " + $typ | halt_error end' "${npmWorkspace-.}/package.json")
|
||||
|
||||
local -r nodeModulesPath="$packageOut/node_modules"
|
||||
|
||||
if [ ! -d "$nodeModulesPath" ]; then
|
||||
if [ -z "${dontNpmPrune-}" ]; then
|
||||
npm prune --omit dev --no-save $npmInstallFlags "${npmInstallFlagsArray[@]}" $npmFlags "${npmFlagsArray[@]}"
|
||||
npm prune --omit=dev --no-save ${npmWorkspace+--workspace=$npmWorkspace} $npmPruneFlags "${npmPruneFlagsArray[@]}" $npmFlags "${npmFlagsArray[@]}"
|
||||
fi
|
||||
|
||||
find node_modules -maxdepth 1 -type d -empty -delete
|
||||
|
Loading…
Reference in New Issue
Block a user