Skip to content

corepack prepare doesn't work for tags including a number #164

@teppeis

Description

@teppeis

corepack prepare npm@latest works but corepack prepare npm@latest-7 doesn't.

The result in corepack@0.13.0:

$ corepack prepare npm@latest-7
Type Error: Invalid comparator: latest-7
    at Comparator.parse (/Users/teppeis/.nodenv/versions/18.7.0/lib/node_modules/corepack/dist/corepack.js:3370:13)
    at new Comparator (/Users/teppeis/.nodenv/versions/18.7.0/lib/node_modules/corepack/dist/corepack.js:3354:10)
    at /Users/teppeis/.nodenv/versions/18.7.0/lib/node_modules/corepack/dist/corepack.js:3611:47
    at Array.map (<anonymous>)
    at Range.parseRange (/Users/teppeis/.nodenv/versions/18.7.0/lib/node_modules/corepack/dist/corepack.js:3611:35)
    at /Users/teppeis/.nodenv/versions/18.7.0/lib/node_modules/corepack/dist/corepack.js:3512:22
    at Array.map (<anonymous>)
    at new Range (/Users/teppeis/.nodenv/versions/18.7.0/lib/node_modules/corepack/dist/corepack.js:3512:8)
    at Module.findInstalledVersion (/Users/teppeis/.nodenv/versions/18.7.0/lib/node_modules/corepack/dist/corepack.js:15788:19)
    at async Engine.resolveDescriptor (/Users/teppeis/.nodenv/versions/18.7.0/lib/node_modules/corepack/dist/corepack.js:15214:31)
(node:45466) Warning: Closing directory handle on garbage collection
(Use `node --trace-warnings ...` to show where the warning was created)

This regex seems to be the cause.

if (/^[a-z-]+$/.test(descriptor.range)) {

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions