scripts/build.js (28 lines of code) (raw):
import config from '../project.config.js';
import path from 'path'
import esMain from 'es-main';
import { fileURLToPath } from 'url'
import { build, loadConfigFromFile } from 'vite'
import { listDirectories } from './utils/fileSystem.js';
const __dirname = fileURLToPath(new URL('.', import.meta.url));
if (esMain(import.meta)) {
// execute if script is run directly
buildAtoms();
}
export async function buildAtoms(assetsPath = "") {
let atoms = await listDirectories(path.resolve(__dirname, '../src/atoms'));
if (config.excludeFromBuild) {
console.log(`Excluding atoms '${config.excludeFromBuild.join(", ")}' from build.`)
atoms = atoms.filter(name => !config.excludeFromBuild.includes(name))
}
for (const atomName of atoms) {
const configEnv = {
mode: atomName, // TODO: stop misusing mode to build specific atom
command: 'build',
ssrBuild: false,
}
process.env.ATOM_ASSETS_PATH = assetsPath;
process.env.ATOM_NAME = atomName;
const configFile = await loadConfigFromFile(configEnv, path.resolve(__dirname, '../vite.config.js'));
await build(configFile.config);
}
}