在项目中,为了更快捷的进行操作和实现功能,我们将部分功能封装成了脚本,方便使用。
在项目的 package.json
中,我们可以看到一些脚本命令,有些是 npm
自带的,有些是我们自定义的。
在项目根目录下,有一个scripts
文件夹,里面存放了被定制过的脚本。
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 设置前请确保设备可以正常访问
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文件夹下的依赖。 请在
docs文件夹下执行
npm install命令。
npm run docs:dev
该命令会启动一个文档服务,用于开发时查看文档。端口是 10086
。
npm run lint
该命令会检查项目中的代码规范,包括代码风格、代码质量等。建议提交代码前,先执行一下这个命令。
npm run build:AppLoader
该命令会构建一个 APPLoader 可以使用的产物,存放在 widget/vpah5
文件夹下。
其核心动作是调用了 scripts
文件夹下的 buildVpa.js
脚本。同时设置了环境变量 process.env.REACT_APP_WITHOUT_INIT = 'no'
,以便在构建时,使用当前.config
中的配置。
此模式下会携带当前开发的配置信息,并且注入到包内,同时在运行过程中,xiaoyouLight
模块会去调用 init
去注册会话信息。因为在 APPLoader 中,没有友空间的会话信息,所以需要手动注册。
同时此模式也将用于 electron 的本地调试的产物。
npm run build:YouZone
此模式下,会构建一个友空间可以使用的产物,存放在 ${process.env.OUTPUT_DIST}/YonZone
文件夹下。详情可以参考环境变量章节的OUTPUT_DIST
字段。
特点是:不会携带当前开发的配置信息,也不会注入到包内,同时在运行过程中,xiaoyouLight
模块不会去调用 init
去注册会话信息。因为在友空间中,已经有会话信息了,不需要手动注册。
也可以看做是正式的 release 版本。
构建完成后,会自动打包成 zip 包,命名为 vpah5_日期.时间.zip
,存放在 ${process.env.OUTPUT_DIST}/YonZone
文件夹下,便于进一步发版和上传。
npm run wifiStart
该命令会开启一个 wifi 同步服务,用于在移动端 APPLoader 调试。
❓
在什么情况下需要使用这个命令呢? 因为在 APPLoader 中,我们使用的
xiaoyouLight模块是原生模块,这部分的功能是使用原生代码实现的,所以在开发过程中,需要在真机上进行调试。 在友空间移动端上,正是使用的这个模块进行网络请求、文件下载解压等操作。 另外在 APPLoader 和友空间移动端中,打开新窗口都是使用了多窗口机制,而不是 SPA 下的路由切换。 涉及到多窗口的通信和数据共享,如果使用到了这些功能,需要特别注意。
开启 wifi 同步服务后,会在控制台打印出二维码,用于在移动端 AppLoader 中设置会话信息。可以使用 APPLoader 扫录,也可以手动输入 IP 地址和端口号。
最新的 APPLoader 下载地址信息:
npm run wifiSync:dev
运行该命令后,将会以 widget/config.xml
文件为模板,生成一个新的临时入口文件,存放在 widget/.apicloud/dev
文件夹下。
其中,新的config.xml
文件中的 content
标签的 src
属性会被替换为当前开发机器的 IP 地址和端口号。
然后将 widget/.apicloud/dev
文件夹下的文件,同步到 APPLoader 中。
因为目录下仅有一个 config.xml
文件,所以同步比较快。
而且入口地址是开发服务地址,所以改动代码后,在 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
命令的区别在于,这个命令是同步构建产物,而不是开发服务。
npm run analyze
该命令用于检查底包的资源占用情况,以便优化底包体积。
⚠
运行该命令前,需要先在
src/webview-demo文件夹下,执行
npm install命令,安装依赖。 由于 electron 模块下载速度较慢,容易出问题,且不是主要路径,特此将其放在了
src/webview-demo文件夹下。 webview-demo 目录是友空间 PC 端提供的一个 demo,用于模拟在 PC 端的运行情况。
npm run electron:dev
使用 electron 环境进行本地调试。
❗
当前命令已经废弃,不再使用。请使用资源管理平台更新底包测试。
npm run adb:push
运行该命令前,需要先运行 npm run build:YouZone
命令,构建一个友空间可以使用的产物,存放在 ${process.env.OUTPUT_DIST}/YonZone
文件夹下。
运行该命令后,将会把 ${process.env.OUTPUT_DIST}/YonZone
文件夹下的文件,推送到友空间中。
❗
当前命令已经废弃,不再使用。因为
adb:push命令已经废弃,所以这个命令也就没有意义了。
npm run adb:delete