Nuxt/scripts/release-edge

80 lines
2.1 KiB
Plaintext
Raw Normal View History

2017-11-24 16:17:27 +00:00
#!/usr/bin/env node
2017-12-12 10:02:39 +00:00
2017-11-24 16:17:27 +00:00
const { resolve } = require('path')
const { spawnSync } = require('child_process')
const { readFileSync, writeFileSync } = require('fs-extra')
2017-11-24 16:17:27 +00:00
2018-07-29 18:28:06 +00:00
class NuxtEdgePublisher {
static changePackageName(module = '') {
// paths
const packagePath = resolve(__dirname, '..', module, 'package.json')
2017-11-24 16:17:27 +00:00
2018-07-29 18:28:06 +00:00
// Read original contents of package.json
const originalPackage = readFileSync(packagePath, 'utf-8')
2017-11-24 16:17:27 +00:00
2018-07-29 18:28:06 +00:00
// Write to backup file
// writeFileSync(packagePath + '.backup', originalPackage)
2017-11-24 16:17:27 +00:00
2018-07-29 18:28:06 +00:00
// Parse package.json
const p = JSON.parse(originalPackage)
2017-11-24 16:17:27 +00:00
2018-07-29 18:28:06 +00:00
// Change package name
p.name = `nuxt-edge${module ? `-${module}` : ''}`
2017-11-24 16:17:27 +00:00
2018-07-29 18:28:06 +00:00
// Get latest git commit id
const gitCommit = String(
spawnSync('git', 'rev-parse --short HEAD'.split(' ')).stdout
).trim()
2017-11-24 16:17:27 +00:00
2018-07-29 18:28:06 +00:00
// Version with latest git commit id
// Using date.now() so latest push will be always choosen by npm/yarn
const date = Math.round(Date.now() / (1000 * 60))
const baseVersion = p.version.split('-')[0]
p.version = `${baseVersion}-${date}.${gitCommit}`
2017-11-24 16:17:27 +00:00
2018-07-29 18:28:06 +00:00
// Write package.json
writeFileSync(packagePath, JSON.stringify(p, null, 2) + '\r\n')
2017-11-24 16:17:27 +00:00
2018-07-29 18:28:06 +00:00
return p
}
2018-01-08 16:52:56 +00:00
2018-07-29 18:28:06 +00:00
static publish(module = '') {
const p = this.changePackageName(module)
2018-01-08 16:52:56 +00:00
2018-07-29 18:28:06 +00:00
// Parse git branch to decide npm tag
let tag = String(
spawnSync('git', 'rev-parse --abbrev-ref HEAD'.split(' ')).stdout
).trim()
2018-01-08 16:52:56 +00:00
2018-07-29 18:28:06 +00:00
// dev ~> latest
if (tag === 'dev') {
tag = 'latest'
}
2018-07-29 18:28:06 +00:00
// Log
// eslint-disable-next-line no-console
console.log(`publishing ${p.name}@${p.version} with tag ${tag}`)
2018-07-29 18:28:06 +00:00
// Do publish
2018-07-29 18:35:18 +00:00
const { status, output } = spawnSync('npm', `publish --tag ${tag}`.split(' '), {
cwd: resolve(__dirname, '..', module)
})
2018-07-29 18:28:06 +00:00
// eslint-disable-next-line no-console
console.log(String(output.concat('\n')).trim())
2018-07-29 18:28:06 +00:00
if (status === 1) {
process.exit(1)
}
}
}
2018-07-29 18:28:06 +00:00
// NuxtEdgePublisher.publish()
2018-07-29 18:28:06 +00:00
// Run make start
// eslint-disable-next-line no-console
console.log(`building nuxt-edge-start`)
spawnSync('npm', 'run build:nuxt-start'.split(' '))
2018-07-29 18:28:06 +00:00
NuxtEdgePublisher.publish('start')