pnpm / action-setup

Install pnpm package manager
https://github.com/marketplace/actions/setup-pnpm
MIT License
939 stars 89 forks source link

Documentation foot gun #147

Open jasonkuhrt opened 1 week ago

jasonkuhrt commented 1 week ago

If user wants to use pnpm env ... then the current documentation leads them astray because it yields this $PATH:

/opt/hostedtoolcache/node/22.10.0/x64/bin:/home/runner/setup-pnpm/node_modules/.bin:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Note that hostedtoolcache precedes the pnpm bin. This means that when pnpm env is used it will not override the static bin in hostedtoolcache.

One way to fix this is change the order contrary to the docs of steps, such that node is setup BEFORE pnpm. But that only works if cache: pnpm is NOT used. 🐔 🥚

It also does not work to run pnpm setup after because it will see that pnpm is in the path (just not before hostedtoolcache) and thus do nothing:

Appended new lines to /home/runner/.bashrc

Next configuration changes were made:
export PNPM_HOME="/home/runner/setup-pnpm/node_modules/.bin"
case ":$PATH:" in
  *":$PNPM_HOME:"*) ;;
  *) export PATH="$PNPM_HOME:$PATH" ;;
esac

Are are solutions that permit pnpm env working AND node setup using cache: pnpm? If so, let's document them. If not, let's mention this caveat.