Add Bridgeable dev watch command

This commit is contained in:
2026-04-30 21:57:04 -06:00
parent 6492600310
commit 83564c7675
3 changed files with 27 additions and 3 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
import { build as viteBuild } from 'vite'; import { build as viteBuild } from 'vite';
import { createViteConfig } from './vite-config.js'; import { createViteConfig } from './vite-config.js';
export const buildSource = async ({ sourceDir, outDir, config }) => { export const buildSource = async ({ sourceDir, outDir, config, watch = false }) => {
await viteBuild(createViteConfig({ sourceDir, outDir, config })); return viteBuild(createViteConfig({ sourceDir, outDir, config, watch }));
}; };
+12
View File
@@ -7,6 +7,7 @@ import { packDist } from './pack.js';
const usage = `Usage: const usage = `Usage:
bridgeable-build validate --source <dir> bridgeable-build validate --source <dir>
bridgeable-build build --source <dir> --out <dir> bridgeable-build build --source <dir> --out <dir>
bridgeable-build dev --source <dir> --out <dir>
bridgeable-build pack --dist <dir> --out <file> bridgeable-build pack --dist <dir> --out <file>
bridgeable-build publish --source <dir> --out <dir> --artifact <file> bridgeable-build publish --source <dir> --out <dir> --artifact <file>
`; `;
@@ -106,6 +107,17 @@ export const runCli = async (processArgv) => {
return; return;
} }
if (command === 'dev') {
validateOrThrow(sourceDir, config);
await buildSource({
sourceDir,
outDir: resolve(args.out ? String(args.out) : 'dist'),
config,
watch: true
});
return;
}
if (command === 'publish') { if (command === 'publish') {
const outDir = resolve(requireArg(args, 'out')); const outDir = resolve(requireArg(args, 'out'));
validateOrThrow(sourceDir, config); validateOrThrow(sourceDir, config);
+13 -1
View File
@@ -5,6 +5,13 @@ import { collectEntries, normalizePath, shouldCopyFile, walkFiles } from './file
const copyServerFilesPlugin = ({ sourceDir, outDir }) => ({ const copyServerFilesPlugin = ({ sourceDir, outDir }) => ({
name: 'copy-bridgeable-server-files', name: 'copy-bridgeable-server-files',
buildStart() {
walkFiles(sourceDir, (absolutePath) => {
if (shouldCopyFile(basename(absolutePath))) {
this.addWatchFile(absolutePath);
}
});
},
closeBundle() { closeBundle() {
walkFiles(sourceDir, (absolutePath) => { walkFiles(sourceDir, (absolutePath) => {
const relativePath = normalizePath(relative(sourceDir, absolutePath)); const relativePath = normalizePath(relative(sourceDir, absolutePath));
@@ -21,7 +28,7 @@ const copyServerFilesPlugin = ({ sourceDir, outDir }) => ({
} }
}); });
export const createViteConfig = ({ sourceDir, outDir, config }) => { export const createViteConfig = ({ sourceDir, outDir, config, watch = false }) => {
const sourceRoot = resolve(sourceDir); const sourceRoot = resolve(sourceDir);
const outputRoot = resolve(outDir); const outputRoot = resolve(outDir);
@@ -34,6 +41,11 @@ export const createViteConfig = ({ sourceDir, outDir, config }) => {
outDir: outputRoot, outDir: outputRoot,
emptyOutDir: true, emptyOutDir: true,
manifest: 'manifest.json', manifest: 'manifest.json',
watch: watch
? {
exclude: ['**/.git/**', '**/dist/**', '**/node_modules/**', '**/storybook-static/**']
}
: null,
rollupOptions: { rollupOptions: {
input: collectEntries(sourceRoot, config), input: collectEntries(sourceRoot, config),
output: { output: {