React Native多端口运行:package.json脚本终端传参配置咨询
在package.json脚本中接收终端传入的参数
你可以通过以下几种方式实现终端传参给package.json里的脚本:
方法1:直接传递参数(需用--分隔)
修改package.json的scripts,用$@捕获所有传入的参数并传递给命令:
{ "scripts": { "dev": "react-native start $@ && npm run ios $@" } }
终端执行时,需要在脚本名后加--来分隔参数:
yarn run dev -- --port=7000
$@会把--port=7000同时传给react-native start和npm run ios两个命令。
方法2:通过环境变量传递
如果不想用--分隔,可以把端口号作为环境变量传入:
修改package.json:
{ "scripts": { "dev": "react-native start --port=${PORT:-8081} && npm run ios --port=${PORT:-8081}" } }
${PORT:-8081}表示如果没有传入PORT环境变量,就用默认值8081。终端执行:
PORT=7000 yarn run dev
方法3:用Node脚本中转(跨平台兼容)
如果需要跨Windows、Mac、Linux平台,且希望直接用--port=7000的形式传参,可以写一个简单的Node脚本作为中间层:
- 创建
dev.js文件:
const { execSync } = require('child_process'); const args = process.argv.slice(2); // 提取--port参数,默认用8081 const portArg = args.find(arg => arg.startsWith('--port=')); const port = portArg ? portArg.split('=')[1] : '8081'; // 依次执行命令,inherit表示共享终端输出 execSync(`react-native start --port=${port}`, { stdio: 'inherit' }); execSync(`npm run ios --port=${port}`, { stdio: 'inherit' });
- 修改package.json的scripts:
{ "scripts": { "dev": "node dev.js" } }
- 终端直接执行:
yarn run dev --port=7000
内容的提问来源于stack exchange,提问作者jerry seigle
相关产品推荐
相关产品推荐

