3.2.3常用脚本

常用脚本

在项目中,为了更快捷的进行操作和实现功能,我们将部分功能封装成了脚本,方便使用。

在项目的 package.json 中,我们可以看到一些脚本命令,有些是 npm 自带的,有些是我们自定义的。

在项目根目录下,有一个scripts文件夹,里面存放了被定制过的脚本。

start

启动项目

npm start

这个命令我们在上一节已经使用过了,它会启动一个开发服务器。

当运行这个命令时,会执行 scripts 文件夹下的 devStart.js 文件。

这个脚本中,核心还是调用了 npx craco start 命令。

✍ 使用 craco 的目的是为了在不 eject 的情况下,修改 webpack 配置。

除此之外,还获取了一下当前开发机器可用的局域网 IP 地址,然后打印出来,在控制台显示二维码,方便快速扫码设置会话信息。

⚠ 可用的局域网定义是:192 和 172 开头的 IP 地址。在特殊情况下,如需定制,请在 .env.local文件中添加REMOTE_IP_PREFIX 变量。 例如:REMOTE_IP_PREFIX=10.11 设置前请确保设备可以正常访问

buildCard

构建卡片

npm run buildCard [cardPath]

从卡片源码中打包构建卡片产物,生成 zip 资源包,存放在 ${process.env.OUTPUT_DIST} 文件夹下(文件夹默认是根目录下的/dist),详细可以参考环境变量的OUTPUT_DIST字段。

使用该命令的时候,需要传入一个参数,即卡片名称。例如:

npm run buildCard Hello

其中,Hello 是需要打包的卡片的源代码路径,是相对于 src/@remote 文件夹的路径。例如:src/@remote/Hello。

如果不传入参数,也可以通过环境变量 CARD_NAME 来指定卡片名称。详细请参考 环境变量章节的BUILD_CARD字段。

✍ 注意,[cardPath] 支持多个组件路径,使用逗号分隔,例如:npm run buildCard Hello,World。这对于需要同时构建多个卡片的场景下,有很大的帮助。

docs:dev

启动文档服务

⚠ 启动文档服务前,请确保已经安装了docs文件夹下的依赖。 请在docs文件夹下执行npm install 命令。

npm run docs:dev

该命令会启动一个文档服务,用于开发时查看文档。端口是 10086。

lint

代码检查

npm run lint

该命令会检查项目中的代码规范,包括代码风格、代码质量等。建议提交代码前,先执行一下这个命令。

build:AppLoader

为 APPLoader 构建产物

npm run build:AppLoader

该命令会构建一个 APPLoader 可以使用的产物,存放在 widget/vpah5 文件夹下。

其核心动作是调用了 scripts 文件夹下的 buildVpa.js 脚本。同时设置了环境变量 process.env.REACT_APP_WITHOUT_INIT = 'no',以便在构建时,使用当前.config中的配置。

此模式下会携带当前开发的配置信息,并且注入到包内,同时在运行过程中,xiaoyouLight模块会去调用 init 去注册会话信息。因为在 APPLoader 中,没有友空间的会话信息,所以需要手动注册。

同时此模式也将用于 electron 的本地调试的产物。

build:YouZone

为友空间构建产物

npm run build:YouZone

此模式下,会构建一个友空间可以使用的产物,存放在 ${process.env.OUTPUT_DIST}/YonZone 文件夹下。详情可以参考环境变量章节的OUTPUT_DIST字段。

特点是:不会携带当前开发的配置信息,也不会注入到包内,同时在运行过程中,xiaoyouLight模块不会去调用 init 去注册会话信息。因为在友空间中,已经有会话信息了,不需要手动注册。

也可以看做是正式的 release 版本。

构建完成后,会自动打包成 zip 包,命名为 vpah5_日期.时间.zip,存放在 ${process.env.OUTPUT_DIST}/YonZone 文件夹下,便于进一步发版和上传。

wifiStart

开启 wifi 同步服务

npm run wifiStart

该命令会开启一个 wifi 同步服务,用于在移动端 APPLoader 调试。

❓ 在什么情况下需要使用这个命令呢? 因为在 APPLoader 中,我们使用的xiaoyouLight 模块是原生模块,这部分的功能是使用原生代码实现的,所以在开发过程中,需要在真机上进行调试。 在友空间移动端上,正是使用的这个模块进行网络请求、文件下载解压等操作。 另外在 APPLoader 和友空间移动端中,打开新窗口都是使用了多窗口机制,而不是 SPA 下的路由切换。 涉及到多窗口的通信和数据共享,如果使用到了这些功能,需要特别注意。

开启 wifi 同步服务后,会在控制台打印出二维码,用于在移动端 AppLoader 中设置会话信息。可以使用 APPLoader 扫录,也可以手动输入 IP 地址和端口号。

最新的 APPLoader 下载地址信息:

wifiSync:dev

同步开发到 APPLoader

npm run wifiSync:dev

运行该命令后,将会以 widget/config.xml 文件为模板,生成一个新的临时入口文件,存放在 widget/.apicloud/dev 文件夹下。

其中,新的config.xml 文件中的 content 标签的 src 属性会被替换为当前开发机器的 IP 地址和端口号。

然后将 widget/.apicloud/dev 文件夹下的文件,同步到 APPLoader 中。 因为目录下仅有一个 config.xml 文件,所以同步比较快。 而且入口地址是开发服务地址,所以改动代码后,在 APPLoader 中也保存热更相关服务,可以实时看到效果。

wifiSync:build

同步构建产物到 APPLoader

npm run wifiSync:build

运行该命令前,需要先运行 npm run build:AppLoader 命令,构建一个 APPLoader 可以使用的产物,存放在 widget/vpah5 文件夹下。

运行该命令后,将会把 widget/ 文件夹下的文件,同步到 APPLoader 中。

此时,在 APPLoader 中使用的入口文件是 widget/config.xml 文件。 里面的 content 标签的 src 属性是指向 widget/vpah5 文件夹下的 index.html 文件。 也就是模拟整包打包后运行在移动端的情况。

可以注意到,这个命令和 wifiSync:dev 命令的区别在于,这个命令是同步构建产物,而不是开发服务。

analyze

分析构建产物

npm run analyze

该命令用于检查底包的资源占用情况,以便优化底包体积。

electron:dev

本地调试 electron

⚠ 运行该命令前,需要先在src/webview-demo文件夹下,执行npm install命令,安装依赖。 由于 electron 模块下载速度较慢,容易出问题,且不是主要路径,特此将其放在了src/webview-demo 文件夹下。 webview-demo 目录是友空间 PC 端提供的一个 demo,用于模拟在 PC 端的运行情况。

npm run electron:dev

使用 electron 环境进行本地调试。


adb:push

❗ 当前命令已经废弃,不再使用。请使用资源管理平台更新底包测试。

【废弃】使用 adb 推送产物

npm run adb:push

运行该命令前,需要先运行 npm run build:YouZone 命令,构建一个友空间可以使用的产物,存放在 ${process.env.OUTPUT_DIST}/YonZone 文件夹下。

运行该命令后,将会把 ${process.env.OUTPUT_DIST}/YonZone 文件夹下的文件,推送到友空间中。

adb:delete

❗ 当前命令已经废弃,不再使用。因为adb:push 命令已经废弃,所以这个命令也就没有意义了。

【废弃】清空 adb 产物

npm run adb:delete
是否仍需要帮助? 请保持联络!
最后更新于 2026/04/24