@arc-fusion/cli
Version:
CLI for running Arc Fusion on your local machine
81 lines (68 loc) • 2.04 kB
JavaScript
const { generate, build, down } = require('../utils/docker')
const { logMessage, MESSAGES, TYPE_MESSAGE } = require('../utils/logMessage')
const { createDockerVolume } = require('../utils/local')
const { CACHE_VOLUME_NAME, PROJECT_ROOT } = require('../environment')
const spawn = require('../utils/spawn')
const path = require('path')
const { COMPILING_STYLES } = MESSAGES
const { INFO } = TYPE_MESSAGE
async function compileStyles (options = {}) {
try {
logMessage(INFO, COMPILING_STYLES)
await generate(undefined, options)
await createDockerVolume(CACHE_VOLUME_NAME)
await build(undefined, options)
const { compose } = options
const command = compose === 'v2' ? 'docker' : 'docker-compose'
const startArgs = [
'-f', path.join(PROJECT_ROOT, '.fusion', 'docker-compose.yml'),
'up',
'-d',
'webpack'
]
await spawn(
command,
compose === 'v2' ? ['compose'].concat(...startArgs) : startArgs,
{
cwd: PROJECT_ROOT,
env: {
...process.env,
COMPOSE_PROJECT_NAME: 'fusion'
},
stdio: 'inherit'
}
)
await new Promise(resolve => setTimeout(resolve, 15000))
const runThemesArgs = [
'-f', path.join(PROJECT_ROOT, '.fusion', 'docker-compose.yml'),
'run',
'--rm',
'themes',
'node', 'index.js', 'generate'
]
await spawn(
command,
compose === 'v2' ? ['compose'].concat(...runThemesArgs) : runThemesArgs,
{
cwd: PROJECT_ROOT,
env: {
...process.env,
COMPOSE_PROJECT_NAME: 'fusion',
NODE_OPTIONS: '--max-old-space-size=4096',
UV_THREADPOOL_SIZE: '64',
NODE_ENV: 'production'
},
stdio: 'inherit'
}
)
} catch (error) {
console.error('Error compiling styles:', error)
throw error
} finally {
console.log('Cleaning up containers...')
await down(undefined, options)
}
}
module.exports = compileStyles