Pnpm in Node image does not seem to be executed `pnpm setup`

site: gemjs.org

I used pnpm link -g to install the project as a global command, but the pnpm directory is not set to the PATH variable

5:15:09 PM: build-image version: e9f1401945bcb1e3b1d95f34fade986bb55d03bd (focal)
5:15:09 PM: buildbot version: f00f63bc86b0227bdd7223c38a003e085279854f
5:15:10 PM: Fetching cached dependencies
5:15:10 PM: Failed to fetch cache, continuing with build
5:15:10 PM: Starting to prepare the repo for build
5:15:10 PM: No cached dependencies found. Cloning fresh repo
5:15:10 PM: git clone --filter=blob:none https://github.com/mantou132/gem
5:15:10 PM: Preparing Git Reference refs/heads/docs
5:15:12 PM: Starting to install dependencies
5:15:13 PM: mise python@3.13.3   install
5:15:13 PM: mise python@3.13.3   download cpython-3.13.3+20250409-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz
5:15:13 PM: mise python@3.13.3   extract cpython-3.13.3+20250409-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz
5:15:14 PM: mise python@3.13.3   python --version
5:15:14 PM: mise python@3.13.3   Python 3.13.3
5:15:14 PM: mise python@3.13.3 ✓ installed
5:15:14 PM: Python version set to 3.13
5:15:15 PM: Collecting pipenv
5:15:15 PM:   Downloading pipenv-2025.0.2-py3-none-any.whl.metadata (17 kB)
5:15:15 PM: Collecting certifi (from pipenv)
5:15:15 PM:   Downloading certifi-2025.4.26-py3-none-any.whl.metadata (2.5 kB)
5:15:15 PM: Collecting packaging>=22 (from pipenv)
5:15:15 PM:   Downloading packaging-25.0-py3-none-any.whl.metadata (3.3 kB)
5:15:15 PM: Collecting setuptools>=67 (from pipenv)
5:15:15 PM:   Downloading setuptools-80.3.1-py3-none-any.whl.metadata (6.5 kB)
5:15:16 PM: Collecting virtualenv>=20.24.2 (from pipenv)
5:15:16 PM:   Downloading virtualenv-20.31.1-py3-none-any.whl.metadata (4.5 kB)
5:15:16 PM: Collecting distlib<1,>=0.3.7 (from virtualenv>=20.24.2->pipenv)
5:15:16 PM:   Downloading distlib-0.3.9-py2.py3-none-any.whl.metadata (5.2 kB)
5:15:16 PM: Collecting filelock<4,>=3.12.2 (from virtualenv>=20.24.2->pipenv)
5:15:16 PM:   Downloading filelock-3.18.0-py3-none-any.whl.metadata (2.9 kB)
5:15:16 PM: Collecting platformdirs<5,>=3.9.1 (from virtualenv>=20.24.2->pipenv)
5:15:16 PM:   Downloading platformdirs-4.3.7-py3-none-any.whl.metadata (11 kB)
5:15:16 PM: Downloading pipenv-2025.0.2-py3-none-any.whl (3.0 MB)
5:15:16 PM:    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.0/3.0 MB 59.8 MB/s eta 0:00:00
5:15:16 PM: Downloading packaging-25.0-py3-none-any.whl (66 kB)
5:15:16 PM: Downloading setuptools-80.3.1-py3-none-any.whl (1.2 MB)
5:15:16 PM:    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 57.6 MB/s eta 0:00:00
5:15:16 PM: Downloading virtualenv-20.31.1-py3-none-any.whl (6.1 MB)
5:15:16 PM:    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.1/6.1 MB 153.6 MB/s eta 0:00:00
5:15:16 PM: Downloading certifi-2025.4.26-py3-none-any.whl (159 kB)
5:15:16 PM: Downloading distlib-0.3.9-py2.py3-none-any.whl (468 kB)
5:15:16 PM: Downloading filelock-3.18.0-py3-none-any.whl (16 kB)
5:15:16 PM: Downloading platformdirs-4.3.7-py3-none-any.whl (18 kB)
5:15:16 PM: Installing collected packages: distlib, setuptools, platformdirs, packaging, filelock, certifi, virtualenv, pipenv
5:15:20 PM: Successfully installed certifi-2025.4.26 distlib-0.3.9 filelock-3.18.0 packaging-25.0 pipenv-2025.0.2 platformdirs-4.3.7 setuptools-80.3.1 virtualenv-20.31.1
5:15:21 PM: [notice] A new release of pip is available: 24.3.1 -> 25.1.1
5:15:21 PM: [notice] To update, run: pip install --upgrade pip
5:15:21 PM: Attempting Ruby version 2.6.2, read from environment
5:15:21 PM: Required ruby-2.6.2 is not installed - installing.
5:15:22 PM: Searching for binary rubies, this might take some time.
5:15:22 PM: Found remote file https://rvm_io.global.ssl.fastly.net/binaries/ubuntu/20.04/x86_64/ruby-2.6.2.tar.bz2
5:15:22 PM: Checking requirements for ubuntu.
5:15:22 PM: Requirements installation successful.
5:15:22 PM: ruby-2.6.2 - #configure
5:15:22 PM: ruby-2.6.2 - #download
5:15:23 PM: ruby-2.6.2 - #validate archive
5:15:26 PM: ruby-2.6.2 - #extract
5:15:28 PM: ruby-2.6.2 - #validate binary
5:15:28 PM: ruby-2.6.2 - #setup
5:15:29 PM: ruby-2.6.2 - #gemset created /opt/buildhome/.rvm/gems/ruby-2.6.2@global
5:15:29 PM: ruby-2.6.2 - #importing gemset /opt/buildhome/.rvm/gemsets/global.gems........................................
5:15:29 PM: ruby-2.6.2 - #generating global wrappers........
5:15:29 PM: ruby-2.6.2 - #gemset created /opt/buildhome/.rvm/gems/ruby-2.6.2
5:15:29 PM: ruby-2.6.2 - #importing gemsetfile /opt/buildhome/.rvm/gemsets/default.gems evaluated to empty gem list
5:15:29 PM: ruby-2.6.2 - #generating default wrappers........
5:15:30 PM: Using /opt/buildhome/.rvm/gems/ruby-2.6.2
5:15:30 PM: Using Ruby version 2.6.2
5:15:30 PM: Started restoring cached go cache
5:15:30 PM: Finished restoring cached go cache
5:15:30 PM: Installing Go version 1.12 (requested 1.12)
5:15:34 PM: go version go1.12 linux/amd64
5:15:35 PM: Using PHP version 8.0
5:15:36 PM: v22.15.0 is already installed.
5:15:37 PM: Now using node v22.15.0 (npm v10.9.2)
5:15:37 PM: Enabling Node.js Corepack
5:15:37 PM: Started restoring cached build plugins
5:15:37 PM: Finished restoring cached build plugins
5:15:37 PM: Started restoring cached corepack dependencies
5:15:37 PM: Finished restoring cached corepack dependencies
5:15:38 PM: pnpm workspaces detected
5:15:38 PM: Installing npm packages using pnpm version 9.10.0
5:15:38 PM: Scope: all 12 workspace projects
5:15:39 PM: Lockfile is up to date, resolution step is skipped
5:15:39 PM: Progress: resolved 1, reused 0, downloaded 0, added 0
5:15:40 PM: Packages: +1748
5:15:40 PM: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5:15:40 PM: Progress: resolved 1748, reused 0, downloaded 0, added 0
5:15:41 PM: Progress: resolved 1748, reused 0, downloaded 276, added 277
5:15:42 PM: Progress: resolved 1748, reused 0, downloaded 555, added 553
5:15:43 PM: Progress: resolved 1748, reused 0, downloaded 789, added 784
5:15:44 PM: Progress: resolved 1748, reused 0, downloaded 1045, added 1044
5:15:45 PM: Progress: resolved 1748, reused 0, downloaded 1335, added 1325
5:15:46 PM: Progress: resolved 1748, reused 0, downloaded 1554, added 1554
5:15:47 PM: Progress: resolved 1748, reused 0, downloaded 1745, added 1746
5:15:47 PM: Progress: resolved 1748, reused 0, downloaded 1746, added 1748, done
5:15:47 PM: .../node_modules/@swc/core postinstall$ node postinstall.js
5:15:47 PM: .../node_modules/dtrace-provider install$ node-gyp rebuild || node suppress-error.js
5:15:47 PM: .../node_modules/spawn-sync postinstall$ node postinstall
5:15:48 PM: .../node_modules/dtrace-provider install: gyp info it worked if it ends with ok
5:15:48 PM: .../node_modules/dtrace-provider install: gyp info using node-gyp@10.1.0
5:15:48 PM: .../node_modules/dtrace-provider install: gyp info using node@22.15.0 | linux | x64
5:15:48 PM: .../node_modules/@swc/core postinstall: Done
5:15:48 PM: .../esbuild@0.24.0/node_modules/esbuild postinstall$ node install.js
5:15:48 PM: .../node_modules/@biomejs/biome postinstall$ node scripts/postinstall.js
5:15:48 PM: .../node_modules/spawn-sync postinstall: Done
5:15:48 PM: .../esbuild@0.24.0/node_modules/esbuild postinstall: Done
5:15:48 PM: .../core-js@3.29.0/node_modules/core-js postinstall$ node -e "try{require('./postinstall')}catch(e){}"
5:15:48 PM: .../node_modules/dtrace-provider install: gyp info find Python using Python version 3.13.3 found at "/opt/buildhome/.local/share/mise/installs/python/3.13.3/bin/python3"
5:15:48 PM: .../node_modules/@biomejs/biome postinstall: Done
5:15:48 PM: .../core-js@3.29.0/node_modules/core-js postinstall: Done
5:15:48 PM: .../node_modules/dtrace-provider install: gyp http GET https://nodejs.org/download/release/v22.15.0/node-v22.15.0-headers.tar.gz
5:15:48 PM: .../node_modules/dtrace-provider install: gyp http 200 https://nodejs.org/download/release/v22.15.0/node-v22.15.0-headers.tar.gz
5:15:49 PM: .../node_modules/dtrace-provider install: gyp http GET https://nodejs.org/download/release/v22.15.0/SHASUMS256.txt
5:15:49 PM: .../node_modules/dtrace-provider install: gyp http 200 https://nodejs.org/download/release/v22.15.0/SHASUMS256.txt
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn /opt/buildhome/.local/share/mise/installs/python/3.13.3/bin/python3
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args [
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '/opt/buildhome/.cache/node/corepack/v1/pnpm/9.10.0/dist/node_modules/node-gyp/gyp/gyp_main.py',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args 'binding.gyp',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '-f',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args 'make',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '-I',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '/opt/build/repo/node_modules/.pnpm/dtrace-provider@0.8.8/node_modules/dtrace-provider/build/config.gypi',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '-I',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '/opt/buildhome/.cache/node/corepack/v1/pnpm/9.10.0/dist/node_modules/node-gyp/addon.gypi',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '-I',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '/opt/buildhome/.cache/node-gyp/22.15.0/include/node/common.gypi',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '-Dlibrary=shared_library',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '-Dvisibility=default',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '-Dnode_root_dir=/opt/buildhome/.cache/node-gyp/22.15.0',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '-Dnode_gyp_dir=/opt/buildhome/.cache/node/corepack/v1/pnpm/9.10.0/dist/node_modules/node-gyp',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '-Dnode_lib_file=/opt/buildhome/.cache/node-gyp/22.15.0/<(target_arch)/node.lib',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '-Dmodule_root_dir=/opt/build/repo/node_modules/.pnpm/dtrace-provider@0.8.8/node_modules/dtrace-provider',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '-Dnode_engine=v8',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '--depth=.',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '--no-parallel',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '--generator-output',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args 'build',
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args '-Goutput_dir=.'
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args ]
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn make
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
5:15:49 PM: .../node_modules/dtrace-provider install: make: Entering directory '/opt/build/repo/node_modules/.pnpm/dtrace-provider@0.8.8/node_modules/dtrace-provider/build'
5:15:49 PM: .../node_modules/dtrace-provider install:   TOUCH Release/obj.target/DTraceProviderStub.stamp
5:15:49 PM: .../node_modules/dtrace-provider install: make: Leaving directory '/opt/build/repo/node_modules/.pnpm/dtrace-provider@0.8.8/node_modules/dtrace-provider/build'
5:15:49 PM: .../node_modules/dtrace-provider install: gyp info ok
5:15:49 PM: .../node_modules/dtrace-provider install: Done
5:15:49 PM: .../node_modules/nx postinstall$ node ./bin/post-install
5:15:49 PM: .../node_modules/nx postinstall: Done
5:15:50 PM: devDependencies:
5:15:50 PM: + @biomejs/biome 1.8.3
5:15:50 PM: + @types/node 20.16.5
5:15:50 PM: + @typescript-eslint/eslint-plugin 6.21.0
5:15:50 PM: + @typescript-eslint/parser 6.21.0
5:15:50 PM: + concurrently 8.2.2
5:15:50 PM: + cross-env 7.0.3
5:15:50 PM: + esbuild 0.24.0
5:15:50 PM: + eslint 8.57.0
5:15:50 PM: + eslint-config-prettier 10.0.1
5:15:50 PM: + eslint-gitignore 0.1.0
5:15:50 PM: + eslint-import-resolver-typescript 3.6.3
5:15:50 PM: + eslint-plugin-import 2.30.0
5:15:50 PM: + eslint-plugin-prettier 5.2.3
5:15:50 PM: + husky 8.0.3
5:15:50 PM: + lerna 8.1.8
5:15:50 PM: + lint-staged 15.2.10
5:15:50 PM: + prettier <- @mantou/prettier 3.5.0-dev
5:15:50 PM: + typescript 5.6.2
5:15:50 PM: . prepare$ husky install && pnpm prepare:build && pnpm prepare:link
5:15:50 PM: . prepare: husky - Git hooks installed
5:15:50 PM: . prepare: > root@1.6.5 prepare:build /opt/build/repo
5:15:50 PM: . prepare: > pnpm -C packages/gem build && lerna exec --scope "{gem-analyzer,duoyun-ui,gem-book,gem-port}" -- pnpm build
5:15:51 PM: . prepare: > @mantou/gem@2.2.0 build /opt/build/repo/packages/gem
5:15:51 PM: . prepare: > pnpm build:module && pnpm build:lib
5:15:51 PM: . prepare: > @mantou/gem@2.2.0 build:module /opt/build/repo/packages/gem
5:15:51 PM: . prepare: > tsc -p tsconfig.build.json
5:15:53 PM: . prepare: > @mantou/gem@2.2.0 build:lib /opt/build/repo/packages/gem
5:15:53 PM: . prepare: > vite build
5:15:53 PM: . prepare: The CJS build of Vite's Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details.
. prepare: vite v5.4.3 building for production...
5:15:53 PM: . prepare: transforming...
5:15:53 PM: . prepare: ✓ 30 modules transformed.
5:15:53 PM: . prepare: rendering chunks...
5:15:53 PM: . prepare: computing gzip size...
5:15:53 PM: . prepare: dist/gem.es.js  107.08 kB │ gzip: 29.50 kB
5:15:53 PM: . prepare: dist/gem.umd.js  74.55 kB │ gzip: 23.38 kB
5:15:53 PM: . prepare: ✓ built in 370ms
5:15:54 PM: . prepare: lerna notice cli v8.1.8
5:15:55 PM: . prepare: lerna info versioning independent
5:15:55 PM: . prepare: lerna info ci enabled
5:15:55 PM: . prepare: lerna notice filter including "{gem-analyzer,duoyun-ui,gem-book,gem-port}"
5:15:55 PM: . prepare: lerna info filter [ '{gem-analyzer,duoyun-ui,gem-book,gem-port}' ]
5:15:55 PM: . prepare: lerna info Executing command in 3 packages: "pnpm build"
5:15:55 PM: . prepare: > duoyun-ui@2.2.0 build /opt/build/repo/packages/duoyun-ui
5:15:55 PM: . prepare: > pnpm clean && tsc -p tsconfig.build.json
5:15:55 PM: . prepare: > gem-analyzer@2.2.0 build /opt/build/repo/packages/gem-analyzer
5:15:55 PM: . prepare: > tsc
5:15:56 PM: . prepare: > duoyun-ui@2.2.0 clean /opt/build/repo/packages/duoyun-ui
5:15:56 PM: . prepare: > node -e "fs.readdirSync('src').map(dir => require('rimraf').sync(dir))"
5:15:57 PM: . prepare: > gem-book@2.2.0 build /opt/build/repo/packages/gem-book
5:15:57 PM: . prepare: > pnpm build:cli && tsc -p ./tsconfig.build.json
5:15:58 PM: . prepare: > gem-book@2.2.0 build:cli /opt/build/repo/packages/gem-book
5:15:58 PM: . prepare: > esbuild ./src/bin/index.ts --tsconfig=./tsconfig.cli.json --outdir=./bin --platform=node --sourcemap --bundle --packages=external
5:15:58 PM: . prepare: ▲ [WARNING] "../public/custom-ws-client" should be marked as external for use with "require.resolve" [require-resolve-not-external]
5:15:58 PM: . prepare:     src/bin/builder.ts:199:46:
5:15:58 PM: . prepare:       199 │ ...ebSocketTransport: require.resolve('../public/custom-ws-client'),
5:15:58 PM: . prepare:           ╵                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5:15:58 PM: . prepare: 1 warning
5:15:58 PM: . prepare:   bin/index.js      43.8kb
5:15:58 PM: . prepare:   bin/index.js.map  79.4kb
5:15:58 PM: . prepare: ⚡ Done in 6ms
5:16:02 PM: . prepare: lerna success exec Executed command in 3 packages: "pnpm build"
5:16:02 PM: . prepare: > root@1.6.5 prepare:link /opt/build/repo
5:16:02 PM: . prepare: > lerna exec --scope "{gem-book,@mantou/gem-port}" -- pnpm link -g
5:16:02 PM: . prepare: lerna notice cli v8.1.8
5:16:03 PM: . prepare: lerna info versioning independent
5:16:03 PM: . prepare: lerna info ci enabled
5:16:03 PM: . prepare: lerna notice filter including "{gem-book,@mantou/gem-port}"
5:16:03 PM: . prepare: lerna info filter [ '{gem-book,@mantou/gem-port}' ]
5:16:03 PM: . prepare: lerna info Executing command in 2 packages: "pnpm link -g"
5:16:03 PM: . prepare:  WARN  link:/opt/build/repo/packages/gem-book has no binaries
5:16:03 PM: . prepare:  WARN  Failed to create bin at /opt/buildhome/.local/share/pnpm/global/5/node_modules/.bin/gem-port. ENOENT: no such file or directory, open '/opt/buildhome/.local/share/pnpm/global/5/node_modules/@mantou/gem-port/bin/index.js'
5:16:03 PM: . prepare:  WARN  link:/opt/build/repo/packages/gem-port has no binaries
5:16:03 PM: . prepare: /opt/buildhome/.local/share/pnpm/global/5:
5:16:03 PM: . prepare: + gem-book 2.2.0 <- ../../../../../../build/repo/packages/gem-book
5:16:03 PM: . prepare: /opt/buildhome/.local/share/pnpm/global/5:
5:16:03 PM: . prepare: + @mantou/gem-port 1.2.0 <- ../../../../../../build/repo/packages/gem-port
5:16:03 PM: . prepare: lerna success exec Executed command in 2 packages: "pnpm link -g"
5:16:03 PM: . prepare: Done
5:16:03 PM: Done in 25.1s
5:16:04 PM: npm packages installed using pnpm
5:16:04 PM: Successfully installed dependencies
5:16:04 PM: Starting build script
5:16:06 PM: Detected 0 framework(s)
5:16:06 PM: Section completed: initializing
5:16:07 PM: ​
5:16:07 PM: Netlify Build                                                 
5:16:07 PM: ────────────────────────────────────────────────────────────────
5:16:07 PM: ​
5:16:07 PM: ❯ Version
5:16:07 PM:   @netlify/build 32.1.0
5:16:07 PM: ​
5:16:07 PM: ❯ Flags
5:16:07 PM:   accountId: 5e28d108e26afa01bc6ad004
5:16:07 PM:   baseRelDir: true
5:16:07 PM:   buildId: 681b249c492d3491dde0c388
5:16:07 PM:   deployId: 681b249c492d3491dde0c38a
5:16:07 PM: ​
5:16:07 PM: ❯ Current directory
5:16:07 PM:   /opt/build/repo
5:16:07 PM: ​
5:16:07 PM: ❯ Config file
5:16:07 PM:   /opt/build/repo/netlify.toml
5:16:07 PM: ​
5:16:07 PM: ❯ Context
5:16:07 PM:   production
5:16:07 PM: ​
5:16:07 PM: Build command from Netlify app                                
5:16:07 PM: ────────────────────────────────────────────────────────────────
5:16:07 PM: ​
5:16:07 PM: $ pnpm -C packages/gem build:docs
5:16:07 PM: > @mantou/gem@2.2.0 build:docs /opt/build/repo/packages/gem
5:16:07 PM: > pnpm run docs --build
5:16:08 PM: Failed during stage 'building site': Build script returned non-zero exit code: 2 (https://ntl.fyi/exit-code-2)
5:16:08 PM: > @mantou/gem@2.2.0 docs /opt/build/repo/packages/gem
5:16:08 PM: > cross-env GEM_BOOK_REPLACE=true gem-book docs "--build"
5:16:08 PM: node:events:496
5:16:08 PM:       throw er; // Unhandled 'error' event
5:16:08 PM:       ^
5:16:08 PM: Error: spawn gem-book ENOENT
5:16:08 PM:     at ChildProcess._handle.onexit (node:internal/child_process:285:19)
5:16:08 PM:     at onErrorNT (node:internal/child_process:483:16)
5:16:08 PM:     at process.processTicksAndRejections (node:internal/process/task_queues:90:21)
5:16:08 PM: Emitted 'error' event on ChildProcess instance at:
5:16:08 PM:     at ChildProcess._handle.onexit (node:internal/child_process:291:12)
5:16:08 PM:     at onErrorNT (node:internal/child_process:483:16)
5:16:08 PM:     at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
5:16:08 PM:   errno: -2,
5:16:08 PM:   code: 'ENOENT',
5:16:08 PM:   syscall: 'spawn gem-book',
5:16:08 PM:   path: 'gem-book',
5:16:08 PM:   spawnargs: [ 'docs', '--build' ]
5:16:08 PM: }
5:16:08 PM: Node.js v22.15.0
5:16:08 PM:  ELIFECYCLE  Command failed with exit code 1. (https://ntl.fyi/exit-code-1)
5:16:08 PM:  ELIFECYCLE  Command failed with exit code 1. (https://ntl.fyi/exit-code-1)
5:16:08 PM: ​
5:16:08 PM: "build.command" failed                                        
5:16:08 PM: ────────────────────────────────────────────────────────────────
5:16:08 PM: ​
5:16:08 PM:   Error message
5:16:08 PM:   Command failed with exit code 1: pnpm -C packages/gem build:docs (https://ntl.fyi/exit-code-1)
5:16:08 PM: ​
5:16:08 PM:   Error location
5:16:08 PM:   In Build command from Netlify app:
5:16:08 PM:   pnpm -C packages/gem build:docs
5:16:08 PM: ​
5:16:08 PM:   Resolved config
5:16:08 PM:   build:
5:16:08 PM:     command: pnpm -C packages/gem build:docs
5:16:08 PM:     commandOrigin: ui
5:16:08 PM:     publish: /opt/build/repo/packages/gem/dist
5:16:08 PM:     publishOrigin: ui
5:16:08 PM:   headers:
5:16:08 PM:     - for: /*
      values:
        Access-Control-Allow-Origin: '*'
        Cache-Control: public, max-age=31536000, immutable
  headersOrigin: config
  redirects:
    - from: /*
      status: 200
      to: /
  redirectsOrigin: config
5:16:08 PM: Build failed due to a user error: Build script returned non-zero exit code: 2
5:16:08 PM: Failing build: Failed to build site
5:16:08 PM: Finished processing build request in 59.033s

Could you explain what you’re trying to do? Why do you need pnpm -C or pnpm setup?

The repo contains a package gem-book. When I build the website, I build the gem-book first, and then build the website using gem-book.

But gem-book is not a valid command when building, I guess pnpm setup is needed`

As for pnpm -C, I just want to execute the build command in the root directory