Nuxt/scripts/build-fixtures
2018-03-19 10:19:19 +08:00

72 lines
1.4 KiB
JavaScript
Executable File

#!/usr/bin/env node
process.env.NODE_ENV = 'test'
const { resolve } = require('path')
const { cpus } = require('os')
const spawnAsync = require('@expo/spawn-async')
const ORA = require('ora')
const pLimit = require('p-limit')
const fixtures = [
'children',
'custom-dirs',
'debug',
'deprecate',
'dynamic-routes',
'empty',
'error',
'module',
'ssr',
'with-config',
// csr,
// dev,
// generate,
// fail generate,
// fallback generate,
// ssr,
// ssr csp,
// spa
'basic'
]
const spinner = new ORA({ enabled: true })
const nuxtBuild = resolve(__dirname, '../bin/nuxt-build')
let _total = fixtures.length
let _done = 0
let remaining = () => ` (${_done}/${_total})`
async function buildFixture(name) {
_done++
let _name = `'${name}'`
spinner.info('Building ' + _name + remaining())
const rootDir = resolve(__dirname, '../test/fixtures', name)
await spawnAsync('node', [nuxtBuild, rootDir])
.catch((err) => {
spinner.warn('Errors while building ' + _name + ': ' + err)
})
.then(() => {
spinner.succeed('Built fixture: ' + _name + remaining())
})
}
async function run() {
const concurrency = Math.min(4, cpus().length)
spinner.info('Building with concurrency of ' + concurrency)
const limit = pLimit(concurrency)
await Promise.all(fixtures.map(fixture =>
limit(() => buildFixture(fixture))))
}
run()
.catch(console.error) // eslint-disable-line no-console
.then(() => process.exit(0))