UNPKG

@suin/semantic-release-yarn

Version:

semantic-release plugin to publish a npm package with yarn@berry

138 lines (136 loc) 11.4 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.publish = exports.prepare = exports.verifyConditions = void 0; const error_1 = __importDefault(require("@semantic-release/error")); const read_pkg_1 = __importDefault(require("read-pkg")); const semver_1 = __importDefault(require("semver")); const pluginConfig_js_1 = require("./pluginConfig.js"); const yarn_js_1 = require("./yarn.js"); let verified = false; let prepared = false; const yarn = new yarn_js_1.Yarn(); async function verifyConditions(config = undefined, context) { config = pluginConfig_js_1.PluginConfig.normalize(config); context.logger.log(`read ${context.cwd}/package.json`); const pkg = await getPackage(context.cwd); if (pkg.private === true) { context.logger.log("skipping to verify npm auth since package is private"); return; } if (config.npmPublish === false) { context.logger.log("skipping to verify npm auth since npmPublish is false"); return; } context.logger.log('set npmRegistryServer: "https://registry.npmjs.org"'); await yarn.setNpmRegistryServer("https://registry.npmjs.org"); context.logger.log("set NPM_TOKEN to yarn config npmAuthToken"); await yarn.setNpmAuthToken(getNpmToken(context.env)); context.logger.log("verify npm auth"); if (!(await yarn.authenticated())) { throw PluginError.EINVALIDNPMTOKEN(); } context.logger.log("install version plugin"); await yarn.pluginImportVersion(); verified = true; } exports.verifyConditions = verifyConditions; async function prepare(config = undefined, context) { config = pluginConfig_js_1.PluginConfig.normalize(config); if (!verified) { return; } // Reload package.json in case a previous external step updated it context.logger.log(`read ${context.cwd}/package.json`); const pkg = await getPackage(context.cwd); if (pkg.private === true) { context.logger.log("skipping to prepare since package is private"); return; } if (config.npmPublish === false) { context.logger.log("skipping to prepare since npmPublish is false"); return; } context.logger.log(`rewrite the "version" field in the package.json: ${context.nextRelease.version}`); const tarballDir = config.tarballDir ?? "."; await yarn.version(context.nextRelease.version); if (typeof tarballDir === "string") { const tarballName = tarballDir + "/package.tgz"; context.logger.log(`creating a tarball: ${tarballName}`); await yarn.pack(tarballName); } context.logger.log(`package contents:`); const tarballContents = await yarn.packDryRun(); for (const tarballContent of tarballContents) { context.logger.log(` ${tarballContent}`); } prepared = true; } exports.prepare = prepare; async function publish(config = undefined, context) { config = pluginConfig_js_1.PluginConfig.normalize(config); if (!verified || !prepared) { return; } // Reload package.json in case a previous external step updated it context.logger.log(`read ${context.cwd}/package.json`); const pkg = await getPackage(context.cwd); if (pkg.private === true) { context.logger.log("skipping to publish since package is private"); return; } if (config.npmPublish === false) { context.logger.log("skipping to publish since npmPublish is false"); return; } const { version } = context.nextRelease; const distTag = getChannel(context.nextRelease.channel); context.logger.log(`Publishing version ${version} to npm registry on dist-tag ${distTag}`); await yarn.publish(distTag); context.logger.log(`Published ${pkg.name}@${version} to dist-tag @${distTag}`); } exports.publish = publish; class PluginError extends error_1.default { static ENOPKGNAME() { return new PluginError("Missing `name` property in `package.json`.", "ENOPKGNAME"); } static ENOPKG() { return new PluginError("Missing `package.json`.", "ENOPKG"); } static EINVALIDNPMTOKEN() { return new PluginError("Invalid npm token.", "EINVALIDNPMTOKEN", `The npm token configured in the \`NPM_TOKEN\` environment variable must be a valid [token](https://docs.npmjs.com/getting-started/working_with_tokens) allowing to publish to the registry \`\`. If you are using Two Factor Authentication for your account, set its level to ["Authorization only"](https://docs.npmjs.com/getting-started/using-two-factor-authentication#levels-of-authentication) in your account settings. **semantic-release** cannot publish with the default " Authorization and writes" level. Please make sure to set the \`NPM_TOKEN\` environment variable in your CI with the exact value of the npm token.`); } } async function getPackage(cwd) { let pkg; try { pkg = await (0, read_pkg_1.default)({ cwd }); } catch (error) { if (error.code === "ENOENT") { throw PluginError.ENOPKG(); } throw new AggregateError([error]); } if (!pkg.name) { throw PluginError.ENOPKGNAME(); } return pkg; } function getNpmToken(env) { if (typeof env["NPM_TOKEN"] !== "string") { throw PluginError.EINVALIDNPMTOKEN(); } return env["NPM_TOKEN"]; } const getChannel = (channel) => channel ? semver_1.default.validRange(channel) ? `release-${channel}` : channel : "latest"; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxvRUFBMkQ7QUFDM0Qsd0RBQW1DO0FBQ25DLG9EQUE0QjtBQUM1Qix1REFBaUQ7QUFDakQsdUNBQWlDO0FBRWpDLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztBQUNyQixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxjQUFJLEVBQUUsQ0FBQztBQUlqQixLQUFLLFVBQVUsZ0JBQWdCLENBQ3BDLFNBQW1DLFNBQVMsRUFDNUMsT0FBZ0I7SUFFaEIsTUFBTSxHQUFHLDhCQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsT0FBTyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDdkQsTUFBTSxHQUFHLEdBQUcsTUFBTSxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLElBQUksR0FBRyxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7UUFDeEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUMzRSxPQUFPO0tBQ1I7SUFDRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssS0FBSyxFQUFFO1FBQy9CLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7UUFDNUUsT0FBTztLQUNSO0lBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMscURBQXFELENBQUMsQ0FBQztJQUMxRSxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQzlELE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7SUFDaEUsTUFBTSxJQUFJLENBQUMsZUFB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