45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
const path = require('path');
|
|
const execa = require('execa');
|
|
const getRegistry = require('./get-registry');
|
|
const getChannel = require('./get-channel');
|
|
const getReleaseInfo = require('./get-release-info');
|
|
|
|
module.exports = async (npmrc, {npmPublish, pkgRoot}, pkg, context) => {
|
|
const {
|
|
cwd,
|
|
env,
|
|
stdout,
|
|
stderr,
|
|
nextRelease: {version, channel},
|
|
logger,
|
|
} = context;
|
|
|
|
if (npmPublish !== false && pkg.private !== true) {
|
|
const basePath = pkgRoot ? path.resolve(cwd, pkgRoot) : cwd;
|
|
const registry = getRegistry(pkg, context);
|
|
const distTag = getChannel(channel);
|
|
|
|
logger.log(`Publishing version ${version} to npm registry on dist-tag ${distTag}`);
|
|
const result = execa(
|
|
'npm',
|
|
['publish', basePath, '--userconfig', npmrc, '--tag', distTag, '--registry', registry],
|
|
{cwd, env, preferLocal: true}
|
|
);
|
|
result.stdout.pipe(stdout, {end: false});
|
|
result.stderr.pipe(stderr, {end: false});
|
|
await result;
|
|
|
|
logger.log(`Published ${pkg.name}@${version} to dist-tag @${distTag} on ${registry}`);
|
|
|
|
return getReleaseInfo(pkg, context, distTag, registry);
|
|
}
|
|
|
|
logger.log(
|
|
`Skip publishing to npm registry as ${npmPublish === false ? 'npmPublish' : "package.json's private property"} is ${
|
|
npmPublish !== false
|
|
}`
|
|
);
|
|
|
|
return false;
|
|
};
|