Is there an existing issue for this?
Package ecosystem
pnpm
Package manager version
8.9.2
Language version
18.17.1
Manifest location and content before the Dependabot update
No response
dependabot.yml content
Here is a minimal version of our dependabot.yml. I can provide more detail if required
version: 2
registries:
npm-github:
type: npm-registry
url: https://npm.pkg.github.com
username: foo@bar.com
password: ${{secrets.GH_TOKEN}}
updates:
- package-ecosystem: npm
directory: /
open-pull-requests-limit: 10
registries:
- npm-github
Updated dependency
No response
What you expected to see, versus what you actually saw
We are using https://npm.pkg.github.com as a private registry for our scoped private packages (e.g. @org/logger). We are running into issues because dependabot is checking https://npm.pkg.github.com registry first for all public packages. In most cases this is 404ing and falling back to the global registry https://registry.npmjs.org.
There are situations where the public package exists in the GitHub registry, however it has stale information about the package. This is causing issues like this:
The latest release of @types/node is "17.0.18".
(Spoiler, this is not the latest release of @types/node 😅)
Unlike npm and yarn it looks like there is no way to specify a locked_registry with pnpm so we can tell dependabot to use a specific registry when resolving a dependency. With a pnpm lockfile, you can include a tarball URL, however from looking at the code this is not respected, unlike properties like resolved.
Not sure if there is another way to achieve this? For example, is there a way to tell dependabot only to use a scoped private registry for scoped dependencies?
Native package manager behavior
No response
Images of the diff or a link to the PR, issue, or logs
proxy | 2023/10/19 21:54:50 [032] GET https://npm.pkg.github.com:443/@sentry%2Fnode
proxy | 2023/10/19 21:54:50 [032] * authenticating npm registry request (host: npm.pkg.github.com, basic auth)
proxy | 2023/10/19 21:54:50 [032] 404 https://npm.pkg.github.com:443/@sentry%2Fnode
proxy | 2023/10/19 21:54:51 [034] GET https://registry.npmjs.org:443/@sentry%2Fnode
proxy | 2023/10/19 21:54:51 [034] 200 https://registry.npmjs.org:443/@sentry%2Fnode
proxy | 2023/10/19 21:54:52 [036] GET https://registry.npmjs.org:443/@sentry%2Fnode/7.74.1
proxy | 2023/10/19 21:54:52 [036] 200 https://registry.npmjs.org:443/@sentry%2Fnode/7.74.1
…
proxy | 2023/10/19 21:56:24 [176] GET https://npm.pkg.github.com:443/@types%2Fnode
proxy | 2023/10/19 21:56:24 [176] * authenticating npm registry request (host: npm.pkg.github.com, basic auth)
proxy | 2023/10/19 21:56:24 [176] 200 https://npm.pkg.github.com:443/@types%2Fnode
One of the errors
Handled error whilst updating @google-cloud/storage: dependency_file_not_resolvable
{:message=>"Error whilst updating @google-cloud/storage in /pnpm-lock.yaml:
WARN Unsupported engine: wanted: {\"node\":\"18.17.1\"} (current: {\"node\":\"v18.18.2\",\"pnpm\":\"8.9.2\"})
WARN The field \"resolutions\" was found in /home/dependabot/dependabot-updater/repo/subdir/package.json. This will not take effect. You should configure \"resolutions\" at the root of the workspace instead.
Progress: resolved 1, reused 0, downloaded 0, added 0
Progress: resolved 39, reused 38, downloaded 0, added 0
Progress: resolved 63, reused 62, downloaded 0, added 0
Progress: resolved 89, reused 69, downloaded 0, added 0
Progress: resolved 127, reused 77, downloaded 0, added 0
ERR_PNPM_NO_MATCHING_VERSION No matching version found for @types/node@18.17.17
This error happened while installing the dependencies of @google-cloud/storage@7.3.1
at retry-request@7.0.1
at @types/request@2.48.8
The latest release of @types/node is \"17.0.18\".
Other releases are:
* newest8: 8.10.59
* newest9: 9.6.55
* ts2.0: 12.12.6
* ts2.1: 12.12.6
* ts2.2: 12.12.6
* ts2.3: 12.12.6
* ts2.4: 12.12.6
* ts2.5: 12.12.6
* ts2.6: 12.12.6
* ts2.7: 12.12.6
* ts2.8: 13.13.4
* ts2.9: 14.0.1
* ts3.0: 14.6.0
* ts3.1: 14.10.1
* ts3.2: 14.14.9
* ts3.3: 14.14.20
* ts3.4: 14.14.31
* ts3.5: 15.6.1
* ts3.6: 16.6.2
* ts3.7: 16.11.7
* ts3.8: 17.0.18
* ts3.9: 17.0.18
* ts4.0: 17.0.18
* ts4.1: 17.0.18
* ts4.2: 17.0.18
* ts4.3: 17.0.18
* ts4.4: 17.0.18
* ts4.5: 17.0.18
* ts4.6: 17.0.18
* ts4.7: 17.0.18
If you need the full list of all 599 published versions run \"$ pnpm view @types/node versions\"."}
Running the view command locally shows that the version exists:
$ pnpm view @types/node versions | grep 18.17.17
'18.17.17', '18.17.18', '18.17.19', '18.18.0', '18.18.1',
Smallest manifest that reproduces the issue
No response
Is there an existing issue for this?
Package ecosystem
pnpm
Package manager version
8.9.2
Language version
18.17.1
Manifest location and content before the Dependabot update
No response
dependabot.yml content
Here is a minimal version of our
dependabot.yml. I can provide more detail if requiredUpdated dependency
No response
What you expected to see, versus what you actually saw
We are using
https://npm.pkg.github.comas a private registry for our scoped private packages (e.g.@org/logger). We are running into issues because dependabot is checkinghttps://npm.pkg.github.comregistry first for all public packages. In most cases this is 404ing and falling back to the global registryhttps://registry.npmjs.org.There are situations where the public package exists in the GitHub registry, however it has stale information about the package. This is causing issues like this:
(Spoiler, this is not the latest release of
@types/node😅)Unlike
npmandyarnit looks like there is no way to specify alocked_registrywithpnpmso we can tell dependabot to use a specific registry when resolving a dependency. With a pnpm lockfile, you can include a tarball URL, however from looking at the code this is not respected, unlike properties likeresolved.Not sure if there is another way to achieve this? For example, is there a way to tell dependabot only to use a scoped private registry for scoped dependencies?
Native package manager behavior
No response
Images of the diff or a link to the PR, issue, or logs
One of the errors
Running the view command locally shows that the version exists:
Smallest manifest that reproduces the issue
No response