diff options
author | Wout Mertens <Wout.Mertens@gmail.com> | 2022-09-27 10:17:50 +0200 |
---|---|---|
committer | Wout Mertens <Wout.Mertens@gmail.com> | 2023-09-20 10:10:51 +0200 |
commit | 724f6bcb774dc5764a760a15b007d4ad0af5c9c0 (patch) | |
tree | bffca88890201020125dbe1704b4735d2ebb7272 | |
parent | 8acedb7656bedb347dc5b6b673fa4c497a8838a1 (diff) |
nodejs: corepack wrappers package
-rw-r--r-- | doc/languages-frameworks/javascript.section.md | 4 | ||||
-rw-r--r-- | pkgs/development/web/nodejs/corepack.nix | 28 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 9 |
3 files changed, 41 insertions, 0 deletions
diff --git a/doc/languages-frameworks/javascript.section.md b/doc/languages-frameworks/javascript.section.md index 0a2099b0a6b12..87d9195fd2a18 100644 --- a/doc/languages-frameworks/javascript.section.md +++ b/doc/languages-frameworks/javascript.section.md @@ -217,6 +217,10 @@ $ prefetch-npm-deps package-lock.json sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= ``` +### corepack {#javascript-corepack} + +This package puts the corepack wrappers for npm, pnpm and yarn in your PATH, and they will honor the `packageManager` setting in the `package.json`. + ### node2nix {#javascript-node2nix} #### Preparation {#javascript-node2nix-preparation} diff --git a/pkgs/development/web/nodejs/corepack.nix b/pkgs/development/web/nodejs/corepack.nix new file mode 100644 index 0000000000000..44cc1ea1bc66c --- /dev/null +++ b/pkgs/development/web/nodejs/corepack.nix @@ -0,0 +1,28 @@ +{ lib, stdenv, nodejs }: + +let + inherit (nodejs) version; +in +stdenv.mkDerivation { + name = "corepack-nodejs-${version}"; + + nativeBuildInputs = [ nodejs ]; + + unpackPhase = "true"; + + installPhase = '' + mkdir -p $out/bin + corepack enable --install-directory $out/bin + # Also wrap npm + corepack enable --install-directory $out/bin npm + ''; + + meta = { + description = "Wrappers for npm, pnpm and yarn via nodejs's corepack"; + homepage = "https://nodejs.org"; + changelog = "https://github.com/nodejs/node/releases/tag/v${version}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ wmertens ]; + platforms = lib.platforms.linux ++ lib.platforms.darwin; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9cf0a108884c7..b56112d319955 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10236,6 +10236,8 @@ with pkgs; nodenv = callPackage ../development/tools/nodenv { }; nodejs = hiPrio nodejs_18; + corepack = hiPrio (callPackage ../development/web/nodejs/corepack.nix { + nodejs = nodejs; }); nodejs-slim = nodejs-slim_18; @@ -10254,13 +10256,20 @@ with pkgs; nodejs-slim_18 = callPackage ../development/web/nodejs/v18.nix { enableNpm = false; }; + corepack_18 = hiPrio (callPackage ../development/web/nodejs/corepack.nix + { nodejs = nodejs_18; }); nodejs_20 = callPackage ../development/web/nodejs/v20.nix { }; nodejs-slim_20 = callPackage ../development/web/nodejs/v20.nix { enableNpm = false; }; + corepack_20 = hiPrio (callPackage ../development/web/nodejs/corepack.nix + { nodejs = nodejs_20; }); # Update this when adding the newest nodejs major version! nodejs_latest = nodejs_20; nodejs-slim_latest = nodejs-slim_20; + corepack_latest = hiPrio (callPackage ../development/web/nodejs/corepack.nix + { nodejs = nodejs_latest; }); + buildNpmPackage = callPackage ../build-support/node/build-npm-package { }; |