wrangler-action/node_modules/preferred-pm/index.js
2023-08-07 15:11:15 -05:00

52 lines
1.3 KiB
JavaScript

'use strict'
const findYarnWorkspaceRoot = require('find-yarn-workspace-root2')
const findUp = require('find-up')
const path = require('path')
const pathExists = require('path-exists')
const whichPM = require('which-pm')
module.exports = async function preferredPM (pkgPath) {
if (typeof pkgPath !== 'string') {
throw new TypeError(`pkgPath should be a string, got ${typeof pkgPath}`)
}
if (await pathExists(path.join(pkgPath, 'package-lock.json'))) {
return {
name: 'npm',
version: '>=5'
}
}
if (await pathExists(path.join(pkgPath, 'yarn.lock'))) {
return {
name: 'yarn',
version: '*'
}
}
if (await pathExists(path.join(pkgPath, 'pnpm-lock.yaml'))) {
return {
name: 'pnpm',
version: '>=3'
}
}
if (await pathExists(path.join(pkgPath, 'shrinkwrap.yaml'))) {
return {
name: 'pnpm',
version: '1 || 2'
}
}
if (await findUp('pnpm-lock.yaml', { cwd: pkgPath })) {
return {
name: 'pnpm',
version: '>=3'
}
}
try {
if (typeof findYarnWorkspaceRoot(pkgPath) === 'string') {
return {
name: 'yarn',
version: '*'
}
}
} catch (err) {}
const pm = await whichPM(pkgPath)
return pm && { name: pm.name, version: pm.version || '*' }
}