cli icon indicating copy to clipboard operation
cli copied to clipboard

[BUG] dist-tag in package.json not re-evaluated

Open SchulteDev opened this issue 1 year ago • 1 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

This issue exists in the latest npm version

  • [X] I am using the latest npm

Current Behavior

Context

I am using a packages npm-dist-tag in my package.json

// An example
"devDependencies": {
  "nx": "canary"
}

Running npm i after adding such a dependency to the package.json works as intended, for time being 19.2.0-canary.20240528-7f11a1d of nx is being fetched and written to the package-lock.json.

dist-tag not re-evaluated

Now, I am using a npm-dist-tag, which does not exist:

"devDependencies": {
  "nx": "dist-tag-not-available-oohhhhhh"
}

Running npm i after adding such a dependency does not work - which is in my opinion correct:

$ npm i
npm error code ETARGET
npm error notarget No matching version found for nx@dist-tag-not-available-oohhhhhh.
npm error notarget In most cases you or one of your dependencies are requesting
npm error notarget a package version that doesn't exist.

But, if I first install nx=canary as I described in context, and change canary to dist-tag-not-available-oohhhhhh in the package.json afterwards, npm i just works fine. The package-lock.json remains untouched in this case, with nx still pointing to 19.2.0-canary.20240528-7f11a1d

Additional question

I wonder, what happens when nx=canary is being used, and the canary dist-tag gets updated - does npm i update the actual version of nx?

Expected Behavior

In the second case, when a npm-dist-tag in the packge.json is being changed to a non-existing one, I would expect NPM to throw an error as it does, when I try to init such a dependency.

Steps To Reproduce

  1. Add nx=canary as dependency to package.json
  2. npm i (nx is being installed)
  3. Change nx to nx=dist-tag-not-available-oohhhhhh in package.json
  4. npm i => executes just fine, nx=canary remains, no error

Environment

npm: 10.8.0 Node.js: v20.10.0 OS Name: Windows 11 System Model Name: Lenovo IdeaPad

SchulteDev avatar May 28 '24 07:05 SchulteDev

Related https://github.com/npm/rfcs/pull/607

SchulteDev avatar May 28 '24 07:05 SchulteDev

This behavior would be very useful, and I believe the most expected. Similarly, I was looking forward to conveniently reference a context of possibly changing code without having to constantly update the version number. Analogous to how DNS works for IP addresses.

aryzing avatar Nov 26 '24 11:11 aryzing

@SchulteMarkus U mentioned an issue that dist-tag in package.json not re-evaluated. i have gone through all the steps which u mentioned above but there is not change in changing the dependencies and we are not getting any error based on ur environment. so it is not an issue

kchindam-infy avatar Dec 09 '24 08:12 kchindam-infy

@kchindam-infy

But, if I first install nx=canary as I described in context, and change canary to dist-tag-not-available-oohhhhhh in the package.json afterwards, npm i just works fine.

That's in my opinion a surprising behaviour, a misbehaviour.

SchulteDev avatar Dec 09 '24 08:12 SchulteDev

@SchulteMarkus Please upgrade the npm and node to the latest version and try again.

kchindam-infy avatar Dec 09 '24 12:12 kchindam-infy