Table of contents
展开目录
目录
开发辅助
为了让开发者能够通过 Node
来控制小程序的上传、预览等功能,微信官方提供了两种开发辅助:开发者工具(命令行/HTTP)
和 miniprogram-ci
模块 | 命令行 | HTTP | miniprogram-ci |
---|
登录工具 | 支持 | 支持 | 不支持 |
是否登录工具 | 支持 | 支持 | 不支持 |
预览 | 支持 | 支持 | 支持 |
上传代码 | 支持 | 支持 | 支持 |
自动预览 | 支持 | 支持 | 不支持 |
构建 npm | 支持 | 支持 | 支持 |
清除缓存 | 支持 | 支持 | 不支持 |
启动工具 | 支持 | 支持 | 不支持 |
打开其他项目 | 支持 | 支持 | 不支持 |
关闭项目窗口 | 支持 | 支持 | 不支持 |
关闭工具 | 支持 | 支持 | 不支持 |
开发者工具(命令行/HTTP)
功能丰富,支持面广,什么都好,就是一点都不好用!
- 需要先开启
HTTP
服务端口;
- 关闭项目、打开其他项目等功能,在
Windows
MacOS
MacOS ARM64
表现不一致;
- 通过脚本改写
project.config.json
属性后,需要清除缓存,再调用预览等功能;
Windows
下拼接 cli
端口号
不同客户端可能安装路径不统一;
如果你想封装一个 package
提供给他人使用,不通平台的兼容性、安装路径等的初始化就能直接劝退大部分使用者,尤其是略懂前端的测试同事、完全不懂开发的产品和运营同事,会额外增加学习成本。
构建 NPM
小程序引入 npm packages
时,千万小心你的主包大小!
- 构建 npm 后的 package 都会被计算在主包内
- 构建 npm 时只会构建
dependencies
中的 package
- 使用
npm i dayjs --save --only=production
来减少体积
结合 packageJsonPath
miniprogramNpmDistDir
来自定义 miniprogram_npm
输出目录
目录结构示例如下:
MINIPROGRAM-CI
前置条件
构建思路
- 通过脚本参数获取
env
;
- 下载代码仓库至本地的
workspace
;
- 切换至
env-branch
;
- 安装依赖;
- 构建项目;
- 调用
miniprogram-ci preview
或 miniprogram-ci upload
;
注入 env
通过不同的 command
注入四套环境的 env
初始化 workspace
在脚本中,设计了三种 scripts
,它们的前置条件,都需要将 workspace
准备好:
build:env
=> build.js
=> 迁移 zip
构建产物
preview:env
=> preview.js
=> 调用 miniprogramCI.preview
upload:env
=> upload.js
=> 调用 miniprogramCI.upload
将 前置条件 其提取,单独封装成 context.js
模块,共享给三种脚本:
构建步骤
新增一个 runExec()
用于异步的执行 command
并在终端输出日志
规划出每次脚本运行所执行的步骤
- 清空
workspace
确保目录干净、代码依赖都是最新的;
- 执行
cloneCommand
;
- 执行
installCommand
;
- 执行
buildCommand
;
- 执行
zip
preview
upload
;
miniprogramCI
在 cloneCommand
installCommand
buildCommand
结束后,便可得到 workspace
ci-build
ci-preview
ci-upload