ea3e7434c6
- ensure that window.__IS_VISUAL_REGRESSION_TESTING is true when CI=1
66 lines
1.8 KiB
JavaScript
66 lines
1.8 KiB
JavaScript
// @ts-check
|
|
const {timer} = require('./timer')
|
|
|
|
const dev = process.argv.find((arg) => ['--dev', '-d'].includes(arg)) != null
|
|
const serve =
|
|
process.argv.find((arg) => ['--serve'].includes(arg)) != null || undefined
|
|
|
|
const isCI = Boolean(process.env.CI)
|
|
|
|
/** Currently running server that can be stopped before restarting */
|
|
let current
|
|
|
|
console.log('cli.js', {dev, serve, isCI})
|
|
|
|
function onUpdatedBuildScript(rebuild) {
|
|
delete require.cache[require.resolve('./build.compiled')]
|
|
/** @type {import("./build")} */
|
|
const module = require('./build.compiled')
|
|
const _start = timer('build.compiled start')
|
|
try {
|
|
module
|
|
.start({
|
|
dev: !isCI && dev,
|
|
isVisualRegressionTesting: isCI,
|
|
serve: serve && {
|
|
findAvailablePort: !isCI,
|
|
// If not in CI, try to spawn a browser
|
|
openBrowser: !isCI && !rebuild,
|
|
waitBeforeStartingServer: current?.stop(),
|
|
},
|
|
})
|
|
.then((running) => {
|
|
current = running
|
|
})
|
|
.catch((err) => {
|
|
console.error('cli.js calling start() in build.compiled.js', err)
|
|
})
|
|
.finally(() => _start.stop())
|
|
} catch (err) {
|
|
_start.stop()
|
|
}
|
|
}
|
|
|
|
timer('cli.js').wrap(() => {
|
|
timer('esbuild build.compiled.js').wrap(() => {
|
|
const {build} = require('esbuild')
|
|
|
|
// compile build files directly which is about 10x faster than esbuild-register
|
|
build({
|
|
entryPoints: [__dirname + '/build.ts'],
|
|
outfile: __dirname + '/build.compiled.js',
|
|
bundle: true,
|
|
platform: 'node',
|
|
external: ['esbuild', 'react', 'react-dom/server'],
|
|
watch: dev && {
|
|
onRebuild(err, res) {
|
|
if (!err) {
|
|
onUpdatedBuildScript(true)
|
|
}
|
|
},
|
|
},
|
|
}).then(() => {
|
|
onUpdatedBuildScript(false)
|
|
})
|
|
})
|
|
})
|