Skip to content

Commit 14b3315

Browse files
committed
Add CJS shim for extension CLI
Ship the bin entry so npx can invoke extension reliably
1 parent 24e0c43 commit 14b3315

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

programs/cli/bin/extension.cjs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/usr/bin/env node
2+
'use strict'
3+
4+
const fs = require('fs')
5+
const path = require('path')
6+
7+
const distCjsEntry = path.resolve(__dirname, '../dist/cli.cjs')
8+
const distEntry = path.resolve(__dirname, '../dist/cli.js')
9+
const sourceEntry = path.resolve(__dirname, '../index.ts')
10+
11+
const run = (entry) => {
12+
require(entry)
13+
}
14+
15+
if (fs.existsSync(distCjsEntry)) {
16+
run(distCjsEntry)
17+
} else if (fs.existsSync(distEntry)) {
18+
run(distEntry)
19+
} else if (fs.existsSync(sourceEntry)) {
20+
try {
21+
const {spawnSync} = require('child_process')
22+
const tsxCli = require.resolve('tsx/cli')
23+
const result = spawnSync(
24+
process.execPath,
25+
[tsxCli, sourceEntry, ...process.argv.slice(2)],
26+
{stdio: 'inherit'}
27+
)
28+
process.exit(result.status ?? 1)
29+
} catch (error) {
30+
// eslint-disable-next-line no-console
31+
console.error(
32+
'[Extension.js] CLI not built. Run "pnpm --filter extension compile".'
33+
)
34+
process.exit(1)
35+
}
36+
} else {
37+
// eslint-disable-next-line no-console
38+
console.error('[Extension.js] CLI entry not found.')
39+
process.exit(1)
40+
}

0 commit comments

Comments
 (0)