Urara-Blog/node_modules/.pnpm-store/v3/files/26/561342aec88765640ab5246301a940120dc3730553fda64f051a264011ae5999c1fe5ed990fd3f6342ef41a85a28a27e52cc9b9e34b23079a8adac73d57f1b
2022-08-14 01:14:53 +08:00

37 lines
997 B
Text

// src/detect.ts
import path from "path";
import findUp from "find-up";
var LOCKS = {
"pnpm-lock.yaml": "pnpm",
"yarn.lock": "yarn",
"package-lock.json": "npm"
};
async function detectPackageManager(cwd = process.cwd()) {
const result = await findUp(Object.keys(LOCKS), { cwd });
const agent = result ? LOCKS[path.basename(result)] : null;
return agent;
}
// src/install.ts
import execa from "execa";
async function installPackage(names, options = {}) {
const agent = options.packageManager || await detectPackageManager(options.cwd) || "npm";
if (!Array.isArray(names))
names = [names];
const args = options.additionalArgs || [];
if (options.preferOffline)
args.unshift("--prefer-offline");
return execa(agent, [
agent === "yarn" ? "add" : "install",
options.dev ? "-D" : "",
...args,
...names
].filter(Boolean), {
stdio: options.silent ? "ignore" : "inherit",
cwd: options.cwd
});
}
export {
detectPackageManager,
installPackage
};