import colors from 'colors'; import path from 'path'; import fs from 'fs'; import mkdirp from 'mkdirp'; import { buildStorybook } from '../builders/build-storybook'; import { buildTemplates } from '../builders/build-templates'; import { buildLabelsJson } from '../builders/build-labels'; import { buildBaseBranding } from '../builders/build-base-branding'; import { buildCustomElementsJson } from '../builders/build-custom-elements'; export async function runBuild(devMode: Boolean, options: any) { const lwcConfigFile = fs.readFileSync( path.resolve(process.cwd(), (options.LWCConfig || 'lwc.config.json')), 'utf-8' ); const lwcConfig = JSON.parse(lwcConfigFile); const storybookDir = path.resolve(process.cwd(), '.storybook'); const buildDir = path.resolve(storybookDir, 'build'); mkdirp.sync(path.resolve(storybookDir, 'assets/styles')); mkdirp.sync(buildDir); try { if (!options.skipBranding) await buildBaseBranding(); if (!options.skipLabels) await buildLabelsJson(); if (!options.skipCustomElements) await buildCustomElementsJson(lwcConfig); if (!options.skipTemplates) await buildTemplates(storybookDir); const results = await buildStorybook(buildDir, storybookDir, devMode) console.log(results); console.log(colors.green('Finished')); } catch (error) { console.log(colors.red('build error: ' + error)); } }