Introducing Socket Firewall: Free, Proactive Protection for Your Software Supply Chain.Learn More
Socket
Book a DemoInstallSign in
Socket

@ifanrx/minci

Package Overview
Dependencies
Maintainers
0
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ifanrx/minci

用于小程序项目开发预览、代码上传。

latest
npmnpm
Version
0.0.2
Version published
Maintainers
0
Created
Source

minci

用于小程序项目开发预览、代码上传。

使用必读

minci 内部会有知晓云数据表的读写操作,是需要授权认证的,在使用之前,你现在可能需要:

  • 找负责人添加 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 -hminci <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]         显示帮助信息

uni-app 项目接入

在小程序根目录下创建 minci.config.js 配置文件(支持 .cjs),如下:

// minci.config.js
module.exports = {
  outputRoot: 'dist/dev/mp-weixin', // 指定编译产物目录,根据项目实际情况配置
}

TIPS:

  • 我们知道 uni-app 项目开发、打包的默认产物目录分别是 dist/dev/mp-weixindist/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 项目的代码不起任何作用,只用于推送企微群组消息,用来表明当前上传的版本是哪个环境。其中 productiondevelopmentqa 分别表示使用了知晓云的生产、测试和 QA 环境。

若项目首次接入 minci,必须先执行 npx minci set 完成相关配置才能进行预览或上传,配置包括小程序名称、小程序代码上传密钥、企业微信群组机器人 WebHook。若已接入,则跳过。若后续需要修改密钥、机器人,也使用该命令进行更新。

TIPS:

  • 小程序代码上传密钥在「微信公众平台 - 登录对应小程序 - 开发 - 开发设置 - 小程序代码上传」处生成。
  • 请注意「小程序代码上传密钥」和「AppSecret 小程序密钥」是两个不同的东西,它们都在微信后台的同一页面,还上下挨着,千万别弄错了!!!
  • 由于微信公众后台默认开启 IP 白名单选项(详见),只有白名单内的 IP 地址才能成功调用上传接口,由于团队成员较多,且 IP 地址可能会随时发生变化,所以基本上是要关闭「IP 白名单」选项的。

小程序版本说明

小程序上传版本号由 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 startminci previewdevelopment,即测试环境
  • minci buildminci uploadproduction,即生产环境

再次强调,--env 对 uni-app 项目的代码不起任何作用,只用于 minci upload 附带的企微群组消息推送,用来表明当前上传的版本是哪个环境。

FAQs

Package last updated on 25 Jun 2024

Did you know?

Socket

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.

Install

Related posts