diff --git a/scripts/build-assets.mjs b/scripts/build-assets.mjs index 1ffcec8aa3..becf046c60 100644 --- a/scripts/build-assets.mjs +++ b/scripts/build-assets.mjs @@ -9,10 +9,12 @@ import cssnano from 'cssnano'; import postcss from 'postcss'; import * as terser from 'terser'; -import locales from '../locales/index.js'; +import { build as buildLocales } from '../locales/index.js'; import generateDTS from '../locales/generateDTS.js'; import meta from '../package.json' assert { type: "json" }; +let locales = buildLocales(); + async function copyFrontendFonts() { await fs.cp('./packages/frontend/node_modules/three/examples/fonts', './built/_frontend_dist_/fonts', { dereference: true, recursive: true }); } @@ -89,10 +91,23 @@ async function build() { await build(); if (process.argv.includes("--watch")) { - const watcher = fs.watch('./packages', { recursive: true }); - for await (const event of watcher) { - if (/^[a-z]+\/src/.test(event.filename)) { - await build(); - } - } + const watchers = [ + fs.watch('./packages', { recursive: true }), + fs.watch('./locales'), + ]; + + while (true) { + const event = (await Promise.race(watchers.map(watcher => watcher.next())))?.value; + if (!event) continue; + const filename = event.filename?.replaceAll('\\', '/'); + + if (/^[a-z]+\/src/.test(filename)) { + await build(); + } + + if (/[a-z]+-[A-Z]+\.yml/.test(filename)) { + locales = buildLocales(); + await copyFrontendLocales() + } + } }