diff --git a/packages/php-wasm/cli/project.json b/packages/php-wasm/cli/project.json index fa3cb6339f..4fb1bfe173 100644 --- a/packages/php-wasm/cli/project.json +++ b/packages/php-wasm/cli/project.json @@ -45,7 +45,7 @@ "dev": { "executor": "nx:run-commands", "options": { - "command": "bun --watch ./packages/php-wasm/cli/src/main.ts", + "command": "node --no-warnings --experimental-wasm-stack-switching --experimental-wasm-jspi --loader=./packages/meta/src/node-es-module-loader/loader.mts ./packages/php-wasm/cli/src/main.ts", "tty": true } }, diff --git a/packages/php-wasm/cli/src/main.ts b/packages/php-wasm/cli/src/main.ts index 018def9d97..4babb1fcb4 100644 --- a/packages/php-wasm/cli/src/main.ts +++ b/packages/php-wasm/cli/src/main.ts @@ -14,6 +14,7 @@ import type { SupportedPHPVersion } from '@php-wasm/universal'; import { FileLockManagerForNode } from '@php-wasm/node'; import { PHP } from '@php-wasm/universal'; import { loadNodeRuntime, useHostFilesystem } from '@php-wasm/node'; +import { startBridge } from '@php-wasm/xdebug-bridge'; import path from 'path'; let args = process.argv.slice(2); @@ -43,6 +44,13 @@ async function run() { args = args.filter((arg) => arg !== '--xdebug'); } + const hasDevtoolsOption = args.some((arg) => + arg.startsWith('--experimental-devtools') + ); + if (hasDevtoolsOption) { + args = args.filter((arg) => arg !== '--experimental-devtools'); + } + // npm scripts set the TMPDIR env variable // PHP accepts a TMPDIR env variable and expects it to // be a writable directory within the PHP filesystem. @@ -97,6 +105,12 @@ ${process.argv[0]} ${process.execArgv.join(' ')} ${process.argv[1]} useHostFilesystem(php); + if (hasDevtoolsOption && hasXdebugOption) { + const bridge = await startBridge({}); + + bridge.start(); + } + const hasMinusCOption = args.some((arg) => arg.startsWith('-c')); if (!hasMinusCOption) { args.unshift('-c', defaultPhpIniPath); diff --git a/packages/php-wasm/cli/vite.config.ts b/packages/php-wasm/cli/vite.config.ts index 186d695b04..cc8dbd5fd6 100644 --- a/packages/php-wasm/cli/vite.config.ts +++ b/packages/php-wasm/cli/vite.config.ts @@ -18,12 +18,16 @@ export default defineConfig({ external: [ '@php-wasm/node', '@php-wasm/universal', + 'assert', 'net', 'fs', 'path', 'child_process', 'http', + 'stream', + 'timers', 'tls', + 'url', 'util', 'dns', 'ws',