From ca9c1847b99126ea1dbf64fdea34f0686ede4cb9 Mon Sep 17 00:00:00 2001 From: Oskar Eichler <62393985+OskarEichler@users.noreply.github.com> Date: Fri, 28 Aug 2026 10:08:36 +0300 Subject: [PATCH] fix(build): preserve watch paths and finish asset copies before returning --- scripts/build.js | 7 ++----- scripts/watch.js | 14 ++++++++------ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/scripts/build.js b/scripts/build.js index 2f8e587f6..803911f77 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -86,12 +86,9 @@ function buildFile(file, silent) { !micromatch.isMatch(file, JS_FILES_PATTERN) && !micromatch.isMatch(file, TS_FILE_PATTERN) ) { + fs.copyFileSync(file, destPath); if (FILES_WITH_755_PERMISSION.includes(fileName)) { - fs.createReadStream(file).pipe( - fs.createWriteStream(destPath, {mode: 0o755}), - ); - } else { - fs.createReadStream(file).pipe(fs.createWriteStream(destPath)); + fs.chmodSync(destPath, 0o755); } silent || process.stdout.write( diff --git a/scripts/watch.js b/scripts/watch.js index de4173a25..6a92f404e 100644 --- a/scripts/watch.js +++ b/scripts/watch.js @@ -10,13 +10,13 @@ */ const fs = require('fs'); -const {execSync} = require('child_process'); +const {execFileSync} = require('child_process'); const path = require('path'); const pico = require('picocolors'); const chokidar = require('chokidar'); const {getPackages} = require('./helpers'); -const BUILD_CMD = `node ${path.resolve(__dirname, './build.js')}`; +const BUILD_SCRIPT = path.resolve(__dirname, './build.js'); let filesToBuild = new Map(); @@ -33,9 +33,9 @@ const onChange = (srcDir) => { const onUnlink = (srcDir) => { return (filePath) => { - const buildFile = filePath - .replace(`${path.sep}src${path.sep}`, `${path.sep}build${path.sep}`) - .replace('.ts', '.js'); + const buildFile = path + .join(path.dirname(srcDir), 'build', path.relative(srcDir, filePath)) + .replace(/\.ts$/, '.js'); try { fs.unlinkSync(buildFile); @@ -73,7 +73,9 @@ setInterval(() => { if (files.length) { filesToBuild = new Map(); try { - execSync(`${BUILD_CMD} ${files.join(' ')}`, {stdio: [0, 1, 2]}); + execFileSync(process.execPath, [BUILD_SCRIPT, ...files], { + stdio: [0, 1, 2], + }); } catch (e) { // omit }