
Security News
Vite+ Joins the Push to Consolidate JavaScript Tooling
Evan You announces Vite+, a commercial, Rust-powered toolchain built on the Vite ecosystem to unify JavaScript development and fund open source.
@ifanrx/minci
Advanced tools
用于小程序项目开发预览、代码上传。
minci 内部会有知晓云数据表的读写操作,是需要授权认证的,在使用之前,你现在可能需要:
npx minci login <client-secret>
以登录生成 Token(已登录跳过)。若后续 Token 失效,重新登录即可。团队约定:
minci 的上传和预览,默认使用「ci 机器人 1」(相当于开发工具登录的微信帐号),应将该机器人上传的版本指定为体验版,提交审核也应该使用该版本,避免出现 A 同学提交 ci 机器人 2 版本、B 同学提交 ci 机器人 3 版本...的情况。
如有特殊情况,又不想覆盖 ci 机器人 1 的版本,可以使用 --robot
参数指定为其他机器人,取值 2 ~ 30。
$ pnpm add @ifanrx/minci -D
目前提供了以下命令:
minci preview
minci upload
minci login
minci set
minci info
更多细节请看 minci -h
或 minci <subcommand> -h
。
$ npx minci -h
Usage: minci [options] [command]
用于小程序项目开发预览、代码上传。
Options:
-v, --version 显示版本信息
-h, --help 显示帮助信息
Commands:
preview [options] 项目预览。
upload [options] 项目打包,并上传代码至小程序后台。
login <client-secret> 登录知晓云 minci 应用。请注意,它不是登录当前小程序所属知晓云应用。
set 配置当前小程序的 minci 信息,包括小程序名称、代码上传密钥、WebHook。
info 显示当前小程序的 minci 信息。
start [options] 项目开发。仅在原生小程序开发模式下可用。
build [options] 项目打包。仅在原生小程序开发模式下可用。
help [command] 显示帮助信息
在小程序根目录下创建 minci.config.js
配置文件(支持 .cjs
),如下:
// minci.config.js
module.exports = {
outputRoot: 'dist/dev/mp-weixin', // 指定编译产物目录,根据项目实际情况配置
}
TIPS:
dist/dev/mp-weixin
、dist/build/mp-weixin
。但在团队内部的 uni-app 项目,pnpm build
之后会将 dist/build/mp-weixin
拷贝到 dist/dev/mp-weixin
目录(详见),因此给出的配置示例可以兼容开发、打包两种场景。如果没有类似的拷贝操作的项目,则按实际情况配置 outputRoot
。在小程序的 package.json
中按需配置添加预览和上传 Scripts,比如:
{
"name": "miniapp",
"scripts": {
"dev": "uni -p mp-weixin -- --BAAS_DEV",
"dev:prod": "uni -p mp-weixin",
"dev:qa": "uni -p mp-weixin -- --BAAS_QA",
"build": "uni build -p mp-weixin",
"preview": "pnpm build:dev && minci preview",
"preview:prod": "pnpm build && minci preview",
"preview:qa": "pnpm build:qa && minci preview",
"upload": "pnpm build && minci upload"
}
}
TIPS:
pnpm build
,而不是 pnpm dev
。原因是后者会一直开着 watch 模式,进程不会关掉,导致无法执行后面的上传或预览命令。minci.config.js
文件 outputRoot
配置 dist/dev/mp-weixin
,开发时可以直接使用 npx minci preview
进行预览,不用停掉 pnpm dev
。minci upload
的 --env
参数,默认值是 production
,它对 uni-app 项目的代码不起任何作用,只用于推送企微群组消息,用来表明当前上传的版本是哪个环境。其中 production
、development
、qa
分别表示使用了知晓云的生产、测试和 QA 环境。若项目首次接入 minci,必须先执行 npx minci set
完成相关配置才能进行预览或上传,配置包括小程序名称、小程序代码上传密钥、企业微信群组机器人 WebHook。若已接入,则跳过。若后续需要修改密钥、机器人,也使用该命令进行更新。
TIPS:
小程序上传版本号由 minci 内部维护,使用时无需手动设置。
由于微信未提供获取小程序线上版本号的能力,使得无法很好地维护上传版本号,加上语义化版本对小程序版本意义不大,现使用 minci 上传代码版本号将使用 ChronVer 来替代 SemVer,形式为 Year.Month.Day.Change
,其中 Change
可选。
假设某天首次上传了一个版本为 2022.07.05
,当天晚些时候又上传了新版本,版本将变为 2022.07.05.1
,即同一天提交的版本 Change + 1
。次日第一次提交将变为 2022.07.06
,以此类推。
对于原生小程序项目,还提供了开发和打包命令:
minci start
minci build
在小程序根目录下创建 minci.config.js
配置文件,相比 uni-app 项目,配置项会多一些,比如:
module.exports = {
depsTool: 'pnpm', // 指定依赖安装工具 pnpm/yarn/npm(小程序 NPM 构建时安装依赖用)
sourceRoot: 'src', // 指定开发源码目录(相对路径,相当于小程序根目录,下同)
outputRoot: 'dist', // 指定编译产物目录
mode: 'native', // 指定项目开发模式
}
推荐添加 tsconfig.json
文件,并配置路径别名(可选)
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
}
}
若有配置路径别名,源码中可以这样用:
// 之前
import constants from '../../../../constants/index'
// 现在
import constants from '@/constants'
在构建时,minci 会自动识别路径别名,然后编译成小程序可识别的真实路径。
对于原生小程序项目里,--env
参数还有其他用处,比如:
export const isDev = process.env.NODE_ENV === 'development'
export const isQa = process.env.NODE_ENV === 'qa'
在构建时,minci 会将 process.env.NODE_ENV
替换成 --env
参数传入的值(是字符串替换,所以不支持 process.env['NODE_ENV']
等写法)。比如执行 minci start --env qa
会被编译为:
export const isDev = 'qa' === 'development'
export const isQa = 'qa' === 'qa'
其中 --env
默认值如下:
minci start
、minci preview
为 development
,即测试环境minci build
、minci upload
为 production
,即生产环境再次强调,
--env
对 uni-app 项目的代码不起任何作用,只用于minci upload
附带的企微群组消息推送,用来表明当前上传的版本是哪个环境。
FAQs
We found that @ifanrx/minci demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Evan You announces Vite+, a commercial, Rust-powered toolchain built on the Vite ecosystem to unify JavaScript development and fund open source.
Security News
Ruby Central’s incident report on the RubyGems.org access dispute sparks backlash from former maintainers and renewed debate over project governance.
Research
/Security News
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.