get_npm_package_info
Retrieve detailed npm package information including version, dependencies, and maintainers to evaluate updates before upgrading.
Instructions
Get comprehensive information about an npm package including latest version, description, dependencies, maintainers, and more. Essential for understanding package details before upgrading dependencies.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Name of the npm package (e.g., 'ember-source', '@glimmer/component', 'ember-cli') |
Implementation Reference
- lib/npm-service.js:59-82 (helper)Formats raw npm registry data into a structured object with name, description, latestVersion, distTags, homepage, repository, license, author, maintainers, keywords, dependencies, devDependencies, peerDependencies, engines, and timestamps.
formatPackageInfo(packageInfo) { const latestVersion = packageInfo['dist-tags']?.latest; const latestVersionData = latestVersion ? packageInfo.versions[latestVersion] : null; return { name: packageInfo.name, description: packageInfo.description || 'No description available', latestVersion: latestVersion || 'Unknown', distTags: packageInfo['dist-tags'] || {}, homepage: packageInfo.homepage || latestVersionData?.homepage || null, repository: packageInfo.repository?.url || latestVersionData?.repository?.url || null, license: latestVersionData?.license || 'Unknown', author: this.formatAuthor(packageInfo.author || latestVersionData?.author), maintainers: packageInfo.maintainers || [], keywords: latestVersionData?.keywords || [], dependencies: latestVersionData?.dependencies || {}, devDependencies: latestVersionData?.devDependencies || {}, peerDependencies: latestVersionData?.peerDependencies || {}, engines: latestVersionData?.engines || {}, lastPublished: packageInfo.time?.[latestVersion] || null, created: packageInfo.time?.created || null, modified: packageInfo.time?.modified || null, }; } - lib/npm-service.js:16-32 (helper)Fetches package information from the npm registry API (https://registry.npmjs.org/{packageName}) with error handling for 404 and other failures.
async getPackageInfo(packageName) { try { const response = await fetch(`${this.registryUrl}/${packageName}`); if (!response.ok) { if (response.status === 404) { throw new Error(`Package "${packageName}" not found on npm registry`); } throw new Error(`Failed to fetch package info: ${response.statusText}`); } const data = await response.json(); return data; } catch (error) { throw new Error(`Error fetching npm package info: ${error.message}`); } }