ui/tools/dev.cjs

25 lines
1.1 KiB
JavaScript
Raw Normal View History

const { execFile, spawn } = require('node:child_process');
const path = require('node:path');
const index = process.argv.indexOf('--test');
const requested = index === -1 ? '' : process.argv[index + 1];
let target = 'ui.test.html';
if (requested) {
const name = requested.includes('.') ? requested : 'components.' + requested;
const parts = name.split('.');
if (parts[0] !== 'components' && parts[0] !== 'utilities') throw new Error('Use npm test -- List, form.DatePicker, or components.form.DatePicker');
target += '?test=' + encodeURIComponent(name);
}
const server = spawn(process.execPath, [path.join(__dirname, 'serve.cjs')], { stdio: 'inherit' });
const url = 'http://127.0.0.1:5173/ui/' + target;
const open = () => {
const command = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'cmd' : 'xdg-open';
const args = process.platform === 'win32' ? ['/c', 'start', '', url] : [url];
execFile(command, args, error => { if (error) console.log('Open this URL: ' + url) });
};
setTimeout(open, 300);
const stop = () => server.kill();
process.on('SIGINT', stop);
process.on('SIGTERM', stop);