Package Name Format
NPM packages can be specified as: Unscoped packages:- Owner: The scope (e.g.,
vuefrom@vue/core) - Name: The package name (e.g.,
corefrom@vue/core)
Configuration Options
The NPM provider supports the following extra options:tags
Type: string[]Default:
["latest"]
Dist-tags to track. Each tag represents a release channel.
latest- Stable production releasenext- Next major versionbeta- Beta releasescanary- Canary/experimental releasesrc- Release candidates
dist-tags.
npmx
Type: booleanDefault:
false
Use npmx.dev instead of npmjs.com for package URLs.
- When
false:https://npmjs.com/package/typescript - When
true:https://npmx.dev/package/typescript
server/providers/npm/index.ts:34
Complete Example
API Endpoints
The NPM provider uses the official NPM registry:Get Package Document (Packument)
/ in scoped package names:
server/providers/npm/client.ts:21-22
Response fields used:
name- Full package namedist-tags- Object mapping tag names to versionsversions- Object containing all version metadatatime- Object mapping versions to publish timestampsrepository.url- Source repository URL
Package Output Format
The NPM provider returns packages in this format: Unscoped package:Release Resolution
Releases are resolved by looking up each requested tag in the package’sdist-tags:
server/providers/npm/index.ts:48-68
Process:
- For each tag in
tagsarray - Look up version in
dist-tags[tag] - Get version metadata from
versions[version] - Get publish timestamp from
time[version] - Create release object
- Filter out failed lookups (missing tags/versions)
Source URL Extraction
Source repository URLs are extracted and cleaned:server/providers/npm/index.ts:32
Examples:
git+https://github.com/user/repo.git→https://github.com/user/repohttps://github.com/user/repo.git→https://github.com/user/repo
Error Handling
Package Not Found (404)
Occurs when:- Package doesn’t exist in NPM registry
- Package name is misspelled
- Package was unpublished
server/providers/npm/client.ts:30
Network Error
Occurs when:- NPM registry is unreachable
- Request times out
- Other HTTP errors (non-404)
server/providers/npm/client.ts:32-36
Implementation Details
Client Layer
The NPM client (NpmClient) provides one method:
Type Definitions
NpmPackument (Package Document):server/providers/npm/types.ts:40-51
NpmVersion:
server/providers/npm/types.ts:24-38
NpmRepository:
server/providers/npm/types.ts:18-22
Provider Info
shared/providers/npm.ts:5-22
Scoped Package Parsing
Scoped packages are parsed to extract owner and name:server/providers/npm/index.ts:24-30
Example:
- Input:
@vue/core - Owner:
vue - Name:
core
Caching
NPM provider requests are cached using the standard Shipped cache:- Cache key includes: package name and configuration hash
- Packument responses are cached to reduce registry load
- Tags are resolved from cached packument data
Version History
Current version:2
Source: server/providers/npm/index.ts:16