31 lines
908 B
JavaScript
31 lines
908 B
JavaScript
'use strict'
|
|
|
|
var spawn = require('child_process').spawn
|
|
|
|
var exports = module.exports = function (cb) {
|
|
// npm loads package.json data before running the `prepublish` hook
|
|
// changing the version on `prepublish` has no effect
|
|
// see https://github.com/npm/npm/issues/7118
|
|
// to circumvent this behavior we are calling `npm publish` inside `prepublish`
|
|
// the package.json is then loaded again and the correct version will be published
|
|
|
|
var child = spawn('npm', ['publish', '--semantic-release-rerun'])
|
|
var handler = exports.handleCloseAndExit.bind(null, cb)
|
|
|
|
child.stdout.pipe(process.stdout)
|
|
child.stderr.pipe(process.stderr)
|
|
|
|
child.on('close', handler)
|
|
child.on('exit', handler)
|
|
child.on('error', cb)
|
|
}
|
|
|
|
exports.handleCloseAndExit = function (cb, code, signal) {
|
|
if (code === 0) return cb(null)
|
|
cb({
|
|
code: code,
|
|
signal: signal,
|
|
message: 'npm publish failed'
|
|
})
|
|
}
|