UNPKG

semantic-release-yarn

Version:

semantic-release plugin to publish a npm package with yarn

51 lines (50 loc) 2.07 kB
import _ from "lodash"; import { addChannel as addChannelNpm } from "./add-channel.js"; import { PLUGIN_NAME } from "./definitions/constants.js"; import { getPkg } from "./get-pkg.js"; import { prepare as prepareNpm } from "./prepare.js"; import { publish as publishNpm } from "./publish.js"; import { verify } from "./verify.js"; let verified; let prepared; export async function verifyConditions(pluginConfig, context) { /** * If the plugin is used and has `npmPublish`, `tarballDir` or * `pkgRoot` configured, validate them now in order to prevent any release if * the configuration is wrong */ if (context.options?.["publish"]) { const publishPlugin = _.castArray(context.options["publish"]).find((config) => config.path && config.path === PLUGIN_NAME) || {}; pluginConfig.npmPublish = _.defaultTo(pluginConfig.npmPublish, publishPlugin.npmPublish); pluginConfig.tarballDir = _.defaultTo(pluginConfig.tarballDir, publishPlugin.tarballDir); pluginConfig.pkgRoot = _.defaultTo(pluginConfig.pkgRoot, publishPlugin.pkgRoot); pluginConfig.mainWorkspace = _.defaultTo(pluginConfig.mainWorkspace, publishPlugin.mainWorkspace); } await verify(pluginConfig, context); verified = true; } export async function prepare(pluginConfig, context) { if (!verified) { await verify(pluginConfig, context); } const pkg = await getPkg(pluginConfig, context); await prepareNpm(pluginConfig, pkg, context); prepared = true; } export async function publish(pluginConfig, context) { if (!verified) { await verify(pluginConfig, context); } const pkg = await getPkg(pluginConfig, context); if (!prepared) { await prepareNpm(pluginConfig, pkg, context); } return publishNpm(pluginConfig, pkg, context); } export async function addChannel(pluginConfig, context) { if (!verified) { await verify(pluginConfig, context); } const pkg = await getPkg(pluginConfig, context); return addChannelNpm(pluginConfig, pkg, context); }