added other possible necessary files to output

This commit is contained in:
2026-06-09 18:45:03 +02:00
parent 19edfebb8c
commit 4854d3cca3
6 changed files with 1088 additions and 16 deletions

View File

@@ -1,19 +1,32 @@
import { watch } from 'node:fs';
import { access, constants, copyFile, mkdir } from 'node:fs/promises';
import { access, constants, copyFile, mkdir, readdir, unlink } from 'node:fs/promises';
import { dirname, join } from 'node:path';
import { fileURLToPath } from 'node:url';
const __dirname = dirname(fileURLToPath(import.meta.url));
const root = join(__dirname, '..');
const source = join(root, 'dist/phx-frontend-plugin-demo/browser/main.js');
const dest = join(root, 'latest/main.js');
const sourceDir = join(root, 'dist/phx-frontend-plugin-demo/browser');
const destDir = join(root, 'latest');
async function copyMainJs() {
async function copyJsFiles() {
try {
await access(source, constants.F_OK);
await mkdir(dirname(dest), { recursive: true });
await copyFile(source, dest);
console.log('[latest] Copied main.js');
await access(sourceDir, constants.F_OK);
await mkdir(destDir, { recursive: true });
const files = (await readdir(sourceDir)).filter((f) => f.endsWith('.js'));
for (const file of files) {
await copyFile(join(sourceDir, file), join(destDir, file));
}
const destFiles = (await readdir(destDir)).filter((f) => f.endsWith('.js'));
for (const file of destFiles) {
if (!files.includes(file)) {
await unlink(join(destDir, file));
}
}
console.log(`[latest] Copied ${files.length} JS file(s)`);
} catch (err) {
if (err.code !== 'ENOENT') {
console.error('[latest] Copy failed:', err.message);
@@ -21,20 +34,20 @@ async function copyMainJs() {
}
}
function watchMainJs() {
function watchJsFiles() {
let timeout;
const debouncedCopy = () => {
clearTimeout(timeout);
timeout = setTimeout(copyMainJs, 100);
timeout = setTimeout(copyJsFiles, 100);
};
const tryWatch = () => {
access(source, constants.F_OK)
access(sourceDir, constants.F_OK)
.then(() => {
copyMainJs();
watch(source, debouncedCopy);
console.log('[latest] Watching for main.js changes');
copyJsFiles();
watch(sourceDir, debouncedCopy);
console.log('[latest] Watching for JS changes in dist');
})
.catch(() => setTimeout(tryWatch, 500));
};
@@ -43,7 +56,7 @@ function watchMainJs() {
}
if (process.argv.includes('--watch')) {
watchMainJs();
watchJsFiles();
} else {
copyMainJs();
copyJsFiles();
}