mirror of
https://github.com/kuaifan/dootask.git
synced 2026-10-30 14:30:49 +00:00
feat(cmd): ./cmd expo dev 支持透传参数给 expo start(如 -c 清除 Metro 缓存)
This commit is contained in:
parent
7043c4efa6
commit
edb2e539a5
11
cmd
11
cmd
@ -419,11 +419,11 @@ electron_operate() {
|
||||
|
||||
# Expo App:同 electron 使用本机 Node,不依赖 Docker。
|
||||
expo_operate() {
|
||||
local usage="用法: ./cmd expo [build] | ./cmd expo dev | ./cmd expo npm <参数...>"
|
||||
local usage="用法: ./cmd expo [build] | ./cmd expo dev [expo start 参数...] | ./cmd expo npm <参数...>"
|
||||
check_node
|
||||
case "${1:-build}" in
|
||||
"build"|"dev")
|
||||
if [[ $# -gt 1 ]]; then
|
||||
if [[ "$1" != "dev" ]] && [[ $# -gt 1 ]]; then
|
||||
error "$usage"
|
||||
return 1
|
||||
fi
|
||||
@ -438,7 +438,8 @@ expo_operate() {
|
||||
(cd resources/app && npm install --no-audit --no-fund) || return $?
|
||||
fi
|
||||
switch_debug dev
|
||||
node ./electron/build.js app-expo dev
|
||||
shift
|
||||
node ./electron/build.js app-expo dev "$@"
|
||||
else
|
||||
node ./electron/build.js app-expo build
|
||||
fi
|
||||
@ -709,7 +710,7 @@ DooTask 管理脚本
|
||||
build, prod 生产环境构建
|
||||
electron 构建桌面应用
|
||||
expo [build] 编译并同步 Expo App 前端
|
||||
expo dev 启动 App 开发模式(Metro + 前端)
|
||||
expo dev [参数...] 启动 App 开发模式(Metro + 前端),参数透传给 expo start(如 -c)
|
||||
expo npm <参数...> 在 Expo 子模块执行本机 npm
|
||||
|
||||
🔧 服务管理:
|
||||
@ -763,7 +764,7 @@ Usage: ./cmd <command> [options]
|
||||
build, prod Production build
|
||||
electron Build desktop app
|
||||
expo [build] Build and copy Expo App web assets
|
||||
expo dev Start App dev mode (Metro + web)
|
||||
expo dev [args...] Start App dev mode (Metro + web), args passed to expo start (e.g. -c)
|
||||
expo npm <args...> Run local npm in the Expo submodule
|
||||
|
||||
🔧 Services:
|
||||
|
||||
7
electron/build.js
vendored
7
electron/build.js
vendored
@ -509,8 +509,8 @@ if (["dev"].includes(argv[2])) {
|
||||
child_process.spawn("npx", ["vite", "--", "fromcmd", "electronDev"], {stdio: "inherit"});
|
||||
child_process.spawn("npm", ["run", "start-quiet"], {stdio: "inherit", cwd: "electron"});
|
||||
} else if (argv[2] === 'app-expo') {
|
||||
if ((argv[3] && !['build', 'dev'].includes(argv[3])) || argv.length > 4) {
|
||||
console.error("用法: node ./electron/build.js app-expo [build|dev]");
|
||||
if ((argv[3] && !['build', 'dev'].includes(argv[3])) || (argv[3] !== 'dev' && argv.length > 4)) {
|
||||
console.error("用法: node ./electron/build.js app-expo [build|dev [expo start 参数...]]");
|
||||
process.exit(1);
|
||||
}
|
||||
const appDir = path.resolve(__dirname, "../resources/app");
|
||||
@ -522,6 +522,7 @@ if (["dev"].includes(argv[2])) {
|
||||
// 开发模式:前端 vite + Metro;键盘交给 Metro(r 重载等),任一退出则全部结束
|
||||
// 地址优先取命令行环境变量,其次按 VSCODE_PROXY_URI 端口模板推导,都没有则 Metro 由 Expo 自动取局域网地址、前端取本机局域网 IP
|
||||
// 手动指定 EXPO_PACKAGER_PROXY_URL 时端口固定(METRO_PORT,默认 2220),否则从 2220 起自动找空闲端口
|
||||
// dev 之后的参数原样透传给 expo start(如 -c 清缓存)
|
||||
const appPort = env.parsed.APP_PORT;
|
||||
const proxyUri = process.env.VSCODE_PROXY_URI || '';
|
||||
const proxyUrl = port => proxyUri.includes('{{port}}') ? proxyUri.replace(/\{\{port\}\}/g, port).replace(/\/+$/, '') : '';
|
||||
@ -550,7 +551,7 @@ if (["dev"].includes(argv[2])) {
|
||||
if (packagerUrl) appEnv.EXPO_PACKAGER_PROXY_URL = packagerUrl;
|
||||
const children = [
|
||||
child_process.spawn("npx", ["vite", "--", "fromcmd"], {stdio: ["ignore", "inherit", "inherit"]}),
|
||||
child_process.spawn("npx", ["expo", "start", "--dev-client", "--port", String(metroPort)], {stdio: "inherit", cwd: appDir, env: appEnv}),
|
||||
child_process.spawn("npx", ["expo", "start", "--dev-client", "--port", String(metroPort), ...argv.slice(4)], {stdio: "inherit", cwd: appDir, env: appEnv}),
|
||||
];
|
||||
let exiting = false;
|
||||
const stopAll = (code) => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user