MCPcopy Create free account
hub / github.com/actions/setup-node / getNameFromPackageManagerField

Function getNameFromPackageManagerField

src/main.ts:139–168  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

137}
138
139export function getNameFromPackageManagerField(): string | undefined {
140 const npmRegex = /^(\^)?npm(@.*)?$/; // matches "npm", "npm@...", "^npm@..."
141 try {
142 const packageJson = JSON.parse(
143 fs.readFileSync(
144 path.join(process.env.GITHUB_WORKSPACE!, 'package.json'),
145 'utf-8'
146 )
147 );
148
149 // Check devEngines.packageManager first (object or array)
150 const devPM = packageJson?.devEngines?.packageManager;
151 const devPMArray = devPM ? (Array.isArray(devPM) ? devPM : [devPM]) : [];
152 for (const obj of devPMArray) {
153 if (typeof obj?.name === 'string' && npmRegex.test(obj.name)) {
154 return 'npm';
155 }
156 }
157
158 // Check top-level packageManager
159 const topLevelPM = packageJson?.packageManager;
160 if (typeof topLevelPM === 'string' && npmRegex.test(topLevelPM)) {
161 return 'npm';
162 }
163
164 return undefined;
165 } catch {
166 return undefined;
167 }
168}

Callers 1

runFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected