-
-
Notifications
You must be signed in to change notification settings - Fork 167
Description
When using pnpm/action-setup, the action sets PNPM_HOME to a path that includes a node_modules directory (e.g., /home/runner/setup-pnpm/node_modules/.bin).
If a project runs tsc (TypeScript Compiler) while nested within this directory structure - which happens during certain pnpm lifecycle scripts or when pnpm is invoked from this path - tsc fails to emit non-code assets like *.json files.
This is caused by a long-standing, unresolved bug in TypeScript: Issue #28432: tsc fails to emit required files when run below node_modules.
TypeScript has a hard-coded heuristic that prevents it from emitting files if it detects node_modules anywhere in the absolute path. Because pnpm/action-setup installs pnpm into a path containing node_modules, it triggers this bug, leading to "works locally, fails in CI" scenarios where dist folders are missing critical JSON assets.
Steps to Reproduce
- Use pnpm/action-setup in a GitHub Action.
- Have a dependency TypeScript project that imports a JSON file:
import data from './data.json' with { type: 'json' };. - This dependency should be built during install stage, for example by installing it as dependency with
github:...source url. - Try to run
pnpm installin dependent project.
Result: The command fails because .js files are created in dist/ of dependency, but .json files are missing.
Suggestion: change PNPM_HOME to something not containing node_modules