You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.6 KiB
62 lines
1.6 KiB
1 year ago
|
#!/usr/bin/env node
|
||
|
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.default.install())
|
||
|
} catch (e) {}
|
||
|
}
|
||
|
|
||
|
global.__vite_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 = 'vite:*'
|
||
|
} else {
|
||
|
// support debugging multiple flags with comma-separated list
|
||
|
value = value
|
||
|
.split(',')
|
||
|
.map((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.VITE_DEBUG_FILTER = filter
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function start() {
|
||
|
return import('../dist/node/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.__vite_profile_session = new inspector.Session())
|
||
|
session.connect()
|
||
|
session.post('Profiler.enable', () => {
|
||
|
session.post('Profiler.start', start)
|
||
|
})
|
||
|
} else {
|
||
|
start()
|
||
|
}
|