-
Notifications
You must be signed in to change notification settings - Fork 172
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
packageManager
field is too limited
#402
Comments
This issue is about several independent feature requests ("I want to use different package managers on different commands", "I want to specify what happens when the version mismatches"). The Can you close this thread and open dedicated ones for each of those two use cases? |
The request is that I want more configuration options for Corepack. Specifically, these are the things I want to be able to configure. I can split it into multiple issues, but I think these all go together (many of these ideas are current features of the |
|
It should be. The |
Where is the goal defined? |
|
All that says is "The "packageManager" field defines which package manager is expected to be used when working on the current project." Are my use cases in scope or out of scope? You're saying its scope is limited but I don't see a limiting principle here. |
Cross linking this other comment from GeoffreyBooth since it has a suggestion how to implement: I do wonder if we are going to hit a wall in the future trying to shove everything into one string. We already have several things defined in one string today: name, version, hash |
I mean this field is already not enough to define what we need to properly develop a project because it doesn't include what node version you should develop with. IMO trying to fix I know my comment is derailing this issue, but I think it is a big waste of everyone's time to push forward on a bad plan. |
💯 Or more to the point, it’s too limiting. Maybe we might never want to implement #406, where we can define different package manager possibilities based on operation (or maybe say that we want Corepack validation to apply only to operations that affect lockfiles) but if we’re limiting ourselves to just a single string, it’s awfully hard to potentially someday add such a feature. (Sure, the string could be stringified JSON, but that’s just ridiculous 😄) Or if we want to implement #405, mimicking npm’s Better to shift to something new now, before we’re enabled by default and stable. I like top-level |
It looks like the npm team is interested in collaborating on whatever this new configuration would be: nodejs/node#51888 (comment). So maybe we don’t name it |
Just wanted to note that corepack now sets the field by default which will definitely be an issue as soon as more people start using it. If |
I think a lot of the the friction here would be resolved by supporting semver ranges? |
The
packageManager
field as currently designed is too limited for what I want to do:As a project author, I want to enforce a version range, like npm >= 10.0.0.
As a project author, I want to control what happens when the developer uses a package manager that fails validation, either because it’s the wrong package manager or a version that’s outside of the defined range:
engines.strict
)As a project author, I want to control over package managers based on operations. For example, I want to ensure that
install
commands use the package manager I specify, butrun
commands can use any package manager. (So install viapnpm
and run scripts via Bun, for example.)Seeing as this much complexity will require multiple configuration options, I suggest we retire the
packageManager
field and create a newcorepack
field that can contain a configuration object with all the necessary fields to cover the various permutations described above.@nodejs/corepack @nodejs/loaders @nodejs/npm @nodejs/package-maintenance
The text was updated successfully, but these errors were encountered: