@eljs/release
Version:
Release npm package easily.
115 lines (113 loc) • 4.14 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/internal/plugins/npm.ts
var npm_exports = {};
__export(npm_exports, {
default: () => npm_default
});
module.exports = __toCommonJS(npm_exports);
var import_utils = require("../../utils");
var import_utils2 = require("@eljs/utils");
var import_node_os = require("node:os");
var npm_default = (api) => {
api.onCheck(async () => {
const { requireOwner } = api.config.npm;
if (requireOwner) {
api.step("Checking npm owner ...");
const user = await (0, import_utils2.getNpmUser)({
cwd: api.cwd
});
for (const pkgName of api.appData.validPkgNames) {
try {
const owners = (await (0, import_utils2.run)("npm", ["owner", "ls", pkgName], {
cwd: api.cwd
})).stdout.trim().split(import_node_os.EOL).map((line) => {
var _a;
return (_a = line.split(" ")) == null ? void 0 : _a[0];
});
if (!(owners == null ? void 0 : owners.includes(user))) {
throw new import_utils.AppError(
`User ${import_utils2.chalk.cyan(user)} is not the owner of \`${pkgName}\`.`
);
}
} catch (error) {
const err = error;
if (err.message.indexOf("Not Found") > -1) {
continue;
}
throw err;
}
}
}
});
api.onRelease(async ({ version, prereleaseId }) => {
var _a;
const {
registry,
branch,
validPkgNames,
validPkgRootPaths,
packageManager
} = api.appData;
api.step("Publishing package ...");
const promiseArr = [];
const errors = [];
for (let i = 0; i < validPkgRootPaths.length; i++) {
const pkgRootPath = validPkgRootPaths[i];
const pkgName = validPkgNames[i];
try {
promiseArr.push(publishPackage(pkgRootPath, pkgName, version));
} catch (error) {
errors.push(pkgName);
}
}
const settledResults = await Promise.allSettled(promiseArr);
for (let i = 0; i < settledResults.length; i++) {
const settledResult = settledResults[i];
if (settledResult.status === "rejected") {
console.log();
import_utils2.logger.error(
`Published ${import_utils2.chalk.cyan(`${validPkgNames[i]}@${version}`)} failed.`
);
const errorMessage = ((_a = settledResult.reason) == null ? void 0 : _a.message) ?? settledResult.reason;
console.log(`Error: ${errorMessage}`);
}
}
async function publishPackage(pkgRootPath, pkgName, version2) {
const tagArg = prereleaseId ? ["--tag", prereleaseId] : "";
const registryArg = registry ? ["--registry", registry] : "";
const { requireBranch } = api.config.git;
const gitCheckArg = requireBranch ? ["--publish-branch", requireBranch] : ["master", "main"].includes(branch) ? [] : ["--no-git-checks"];
const cliArgs = [
"publish",
...tagArg,
...registryArg,
...gitCheckArg,
...(0, import_utils2.normalizeArgs)(api.config.npm.publishArgs)
].filter(Boolean);
await (0, import_utils2.run)(packageManager, cliArgs, {
cwd: pkgRootPath,
verbose: true,
stdin: "inherit"
});
import_utils2.logger.ready(
`Published ${import_utils2.chalk.bold.cyan(`${pkgName}@${version2}`)} successfully.`
);
}
});
};