Currently, the npmClient ionic uses can only be set globally, using e.g.:
ionic config set -g npmClient pnpm
In my opinion, it should be possible to override this on a project level, e.g.:
ionic config set npmClient pnpm
This commands "succeeds" and updates the ionic.config.json, but ionic doesn't check that file for this parameter (a bit confusing).
The use cases:
- We have some older projects that use npm, and newer once use pnpm. It has happened multiple times that I run
ionic build when i just switched project and forgot to switch package manager. This then creates a pnpm-lock file in an npm project. And regularly breaks my dependencies and requires deleting node-modules and reinstalling. This wastes time.
- We have pipelines that build iOS projects on local MacMini's. However, if the global ionic package manager changes, and a pipeline doesn't have the setting to change it back, the build breaks. It's not always obvious that the issue is caused by a switch in package manager.
This was previously suggested in #4570, but was not implemented because the lack of use cases.