Skip to main content

JoyCoder命令行工厂

快捷命令行#

脚手架到用户之间的桥梁,摆脱脚手架命令行需要记忆和拼参的烦恼。

功能演示

官方工作区目前支持的命令:

  • 发布Beta版本npm包到京东源:自动根据semver规范生产beta版本号然后触发npm publish
  • 支持快捷使用 Leo 脚手架中的命令行(目录下存在leo配置文件时才会出现菜单)
note

此功能是从JoyCoder配置后台配置而来,有较好的扩展性,几乎可以通过配置覆盖所有的脚手架工具和命令行场景。比如京喜与新业务研发部工作区目前支持的场景有:

  • H5 单页Dev、H5 单页Release
  • 京喜微信小程序(Wxa) 单页Dev
  • 微信小程序(Taro) 单页Dev
  • 微信小程序(Taro) 整体Build
  • 京东小程序(拼拼Taro) 单页Dev
  • 京东小程序(拼拼Taro) 整体Build

自定义命令行#

在某些复杂场景下,我们需要同时触发多个命令。JoyCoder也支持特定场景下需要执行多个命令的场景,基于目录下的joycoder.config.json配置文件,JoyCoder将按配置的方式串行或并行来执行相应编译

功能演示

配置说明#

在某个目录下新建配置文件名称:joycoder.config.json

JSON数组格式、当只有一项配置时,直接执行对应命令,当有多项配置时,会打开对话框选择具体要执行的其中一项配置。

  • label: 自定义命令的名称,只有展示作用,无逻辑
  • mode: serial/parallel,serial表示串行,每个命令会在上个命令执行结束后进行,parallel表示并行,每个命令会单独开启新的命令行窗口
  • list: 命令的集合
    • workDirectory: 执行命令的目录,@开始为当前项目根目录(含有.git的目录),/开始为绝对路径,./或者../为相对路径
      • script: 具体执行的命令
      • timeout: 当前命令延迟执行的时间,单位秒
配置示例#
// jxapp/src/pages/jdreserve/joycoder.config.json{    "customCommand": [        {          "label": "抽取编译京喜团任务相关页面",          "mode": "parallel",          "list": [            {              "workDirectory": "@/",              "script": "npm run dev:wxapp -- -p pages/jdreserve/task/index/index,pages/jdreserve/task/invite-new/index/index"            },            {              "workDirectory": "@/wxapp",              "script": "npm run watch:pg -- -p pages/jdreserve/task/index/index,pages/jdreserve/task/invite-new/index/index",              "timeout": 20            }          ]        },        {          "label": "H5(SPA)本地Dev编译京喜团页面",          "mode": "serial",          "list": [            {              "workDirectory": "@/",              "script": "npm run build:h5 -- --page pages/jdreserve/index/index --spa --watch"            }          ]        }    ]}

字段说明#

字段
label-自定义编译子项名称
mode-模式 serial:串行 parallel:并行
listworkDirectory工作目录,支持绝对路径(如:\xxx\xxx)、以当前配置文件为基准的相对路径(如:..\xxx\xxx)、以当前项目根目录为基准的相对路径(如:@\xxx\xxx)
listscript执行脚本 如:npm run watch:pg -- -p pages/jdreserve/task/index/index
listtimeout此命令延迟多长时间执行(单位秒),通常用于命令之间有依赖的场景,比如以上案例中的 timeout 就表示customCommand[0].list[0].script执行20秒后再执行customCommand[0].list[1].script