@metricinsights/pp-dev
Version:
Portal Page dev build tool
66 lines (53 loc) • 1.79 kB
JavaScript
import { performance } from 'node:perf_hooks';
if (!import.meta.url.includes('node_modules')) {
try {
// only available as dev dependency
await import('source-map-support').then((r) => r.install?.() || r.default.install());
} catch (e) {
/* empty */
}
}
global.__pp_dev_start_time = performance.now();
// check debug mode first before requiring the CLI.
const debugIndex = process.argv.findIndex((arg) => /^(?:-d|--debug)$/.test(arg));
const filterIndex = process.argv.findIndex((arg) => /^(?:-f|--filter)$/.test(arg));
const profileIndex = process.argv.indexOf('--profile');
if (debugIndex > 0) {
let value = process.argv[debugIndex + 1];
if (!value || value.startsWith('-')) {
value = 'pp-dev:*,vite:*';
} else {
// support debugging multiple flags with comma-separated list
value = value
.split(',')
.map((v) => `pp-dev:${v},vite:${v}`)
.join(',');
}
process.env.DEBUG = `${process.env.DEBUG ? process.env.DEBUG + ',' : ''}${value}`;
if (filterIndex > 0) {
const filter = process.argv[filterIndex + 1];
if (filter && !filter.startsWith('-')) {
process.env.PP_DEV_DEBUG_FILTER = filter;
process.env.VITE_DEBUG_FILTER = filter;
}
}
}
function start() {
return import('../dist/esm/cli.js');
}
if (profileIndex > 0) {
process.argv.splice(profileIndex, 1);
const next = process.argv[profileIndex];
if (next && !next.startsWith('-')) {
process.argv.splice(profileIndex, 1);
}
const inspector = await import('node:inspector').then((r) => r.default);
const session = (global.__pp_dev_profile_session = new inspector.Session());
session.connect();
session.post('Profiler.enable', () => {
session.post('Profiler.start', start);
});
} else {
start();
}