Skip to main content
Glama
nrwl

Nx MCP Server

Official
by nrwl
package-manager-command.ts2.97 kB
import { Logger } from '@nx-console/shared-utils'; import type { PackageManager, PackageManagerCommands, } from 'nx/src/utils/package-manager'; import { importNxPackagePath } from '../workspace-dependencies'; import { readNxJson } from '../nx-json'; import { existsSync } from 'fs'; import { join } from 'path'; export async function detectPackageManager( workspacePath: string, logger?: Logger, ): Promise<PackageManager> { try { const { detectPackageManager } = await importNxPackagePath< typeof import('nx/src/utils/package-manager') >(workspacePath, 'src/utils/package-manager', logger); return detectPackageManager(workspacePath); } catch (e) { logger?.log(`Error detecting package manager: ${JSON.stringify(e)}`); } // fallback logic try { const nxJson = await readNxJson(workspacePath); return ( nxJson.cli?.packageManager ?? (existsSync(join(workspacePath, 'bun.lockb')) || existsSync(join(workspacePath, 'bun.lock')) ? 'bun' : existsSync(join(workspacePath, 'yarn.lock')) ? 'yarn' : existsSync(join(workspacePath, 'pnpm-lock.yaml')) ? 'pnpm' : 'npm') ); } catch (e) { // return npm by default return 'npm'; } } export async function getPackageManagerVersion( packageManager: PackageManager, workspacePath: string, logger?: Logger, ): Promise<string | null> { try { const { getPackageManagerVersion } = await importNxPackagePath< typeof import('nx/src/utils/package-manager') >(workspacePath, 'src/utils/package-manager', logger); return getPackageManagerVersion(packageManager, workspacePath); } catch (e) { logger?.log(`Error getting package manager version: ${JSON.stringify(e)}`); return null; } } export async function getPackageManagerCommand( workspacePath: string, logger?: Logger, ): Promise<PackageManagerCommands> { try { const { detectPackageManager, getPackageManagerCommand } = await importNxPackagePath<typeof import('nx/src/utils/package-manager')>( workspacePath, 'src/utils/package-manager', logger, ); return getPackageManagerCommand(detectPackageManager(workspacePath)); } catch (e) { logger?.log(`Error getting package manager command: ${JSON.stringify(e)}`); // return npm by default return { install: 'npm install', ciInstall: 'npm ci --legacy-peer-deps', updateLockFile: 'npm install --package-lock-only', add: 'npm install', addDev: 'npm install -D', rm: 'npm rm', exec: 'npx', dlx: 'npx', run: (script: any, args: any) => `npm run ${script}${args ? ' -- ' + args : ''}`, list: 'npm ls', getRegistryUrl: 'npm config get registry', publish: (packageRoot, registry, registryConfigKey, tag) => `npm publish "${packageRoot}" --json --"${registryConfigKey}=${registry}" --tag=${tag}`, }; } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nrwl/nx-console'

If you have feedback or need assistance with the MCP directory API, please join our Discord server