@juit/check-updates
Version:
Small and fast utility to update package dependencies
39 lines (38 loc) • 1.21 kB
JavaScript
// npmrc.ts
import fs from "node:fs/promises";
import path from "node:path";
import { parse } from "ini";
function replaceEnvironmentVariable(token) {
return token.replace(/^\$\{?([^}]*)\}?$/, (_match, ...vars) => {
return process.env[vars[0]] || "";
});
}
async function readIniFile(filename) {
try {
const data = await fs.readFile(filename, "utf8");
const npmrc = parse(data);
for (const key in npmrc) {
if (typeof npmrc[key] === "string") {
npmrc[key] = replaceEnvironmentVariable(npmrc[key]);
}
}
return npmrc;
} catch (error) {
if (error.code === "ENOENT") return {};
throw error;
}
}
async function readNpmRc(packageJsonFile) {
const local = readIniFile(path.resolve(packageJsonFile, "..", ".npmrc"));
const user = readIniFile(
process.env.NPM_CONFIG_USERCONFIG ? process.env.NPM_CONFIG_USERCONFIG : process.env.HOME ? path.resolve(process.env.HOME, ".npmrc") : ""
);
const global = readIniFile(
process.env.NPM_CONFIG_GLOBALCONFIG ? process.env.NPM_CONFIG_GLOBALCONFIG : "/etc/npmrc"
);
return Object.assign({}, ...await Promise.all([global, user, local]));
}
export {
readNpmRc
};
//# sourceMappingURL=npmrc.mjs.map