ironman 前端工具
前端工具箱,旨在提高前端效率,让我们专心写代码,把其他工作交给ironman就行了
使用说明
安装ironman
前,需要切换npm
镜像至http://pnpm.ppmoney.com
cnpm i nrm -g # 添加pnpm私服源地址 nrm add pnpm http://pnpm.ppmoney.com/ # 使用pnpm私服 nrm use pnpm
全局安装:
npm i @ppmoney/ironman -g
功能列表
- init 生成项目脚手架
- upyun 又拍云静态资源上传
- upload 项目文件上传部署
- temp 下载组件 or 方法,组件或方法 git 仓库: git@git.scm.ppmoney.com:ironman/ironman-path.git
- merge 项目仓库发起release-request请求
- rm 删除文件
- version 添加CHANGELOG.md和自动更改项目版本并提交
获取详细参数,使用ironman <command> -h/--help
前端脚手架功能
目前已经把脚手架从ppava中剥离出来,迁移至http://git.scm.ppmoney.com/ironman/ironman-template
下,如ironman/ironman-template/umi
为umi脚手架,
执行如下代码即可:
ironman init umi
ironman init
会后下载相应脚手架,会询问是否同步到远程gitlab仓库,默认不创建远程仓库,否则输入y则会git init
该项目并在pokeball远程库下创建和关联该项目,然后创建该项目对应的jenkins构建项目和添加webhook
脚手架开发
# template为脚手架模板 Usage: ironman init [template] Example: ironman init umi
目前脚手架gitlab仓库为http://git.scm.ppmoney.com/ironman/ironman-template
,在此仓库里新建你的脚手架
脚手架配置文件:template.config.js,ironman init 会读取这个文件的配置来初始化
const path = var config = platformList: ppmoney: upyunDomain: "https://special.ppmoney.com" geedai: upyunDomain: "https://m.geedai.com" moduleexports = "replacePattern": /$/ // 需要替换的规则,正则表达式 "prompt": //命令行输入配置,参考:https://www.npmjs.com/package/inquirer "name": "platform" "message": "请选择业务类型(platform):" "type": "list" "choices": Object name: 'name' message: '请输入项目名称(name):' type: 'input' { if input == '' console; return false return true } name: 'description' message: '请输入项目描述(description):' type: 'input' //校验命令行输入值 { //这里整体验证命令行的输入数据,ironmanTools为ironman提供的方法(自己写也行),这个方法必须返回一个boolean,true为通过,如果不通过会重新输入 if await ironmanTools //判断是否存在ppava里面 console; return false; if ironmanTools //判断文件或者文件夹是否纯已经存在 console; return false; return true; }
又拍云静态资源上传
# --remote为上传到又拍云的文件夹 # --dist为本地要上传的文件夹 # --platform为业务端平台 Usage: ironman upyun --remote=<remoteDir> --dist=<localDir> --platform=<platform> Example: ironman upyun --remote=/PPava/ppmoney --dist=/dist --platform=ppmoney
全局又拍云配置: 当配置项:useUpyun为true时,ironman会去读取全局配置:
Linux系统文件目录为:/data/ironman.conf Windows系统文件目录为:C:\Users{User_Name}\ironman.conf,User_Name为当前用户名
可将又拍云配置统一放至此配置中,可多项目共享,例子中的为前端的测试又拍云, 正式的配置请存放至服务器的/data/ironman.conf下
发布功能
集成ppava发布功能,包括发布到测试环境和正式环境,统一使用如下命令发布,
# 默认读取ironman.config.js配置 ironman upload # 读取ironman.config.js + ironman.config.release.js 合并的配置 cross-env IRONMAN_ENV=release ironman upload
执行ironman upload即可上传,默认为上传至/${platform}/${name}路由 如果需要添加环境,请加上环境变量IRONMAN_ENV,如
# 默认读取ironman.config.js配置 ironman upload # 读取ironman.config.js + ironman.config.sit.js 合并的配置 IRONMAN_ENV=sit ironman upload
会上传至:/${platform}/${name}/sit
特别地:禁止本地上传至测试环境和正式环境,需要通过105.106机器统一发布,可将自己的项目加入Jenkins发布
配置文件
ironman.config.js 默认配置 比如:
moduleexports = "ppava": "name": "umi" //项目名称 "platform": "ppmoney" //业务端 "title": "页面标题" "config": {}注入到视图的配置 'url': 'https://h5-dev.ppmoney.com' //上传的PPava地址 "dist": "/dist/**" //静态资源 "document": '/dist/index.html' //视图文件 'useUpyun': true //是否开启又拍云,默认为false,true时将静态资源上传至对应platform的又拍云空间:/PPava/${platform}/${name}下,false时上传至PPava服务器
ironman.{IRONMAN_ENV}.js,将与默认配置合并,得到对应环境的配置 项目的路由为:
/${platform}/${name}
约定:不能使用已经存在了的项目名称
生成umi页面模板命令
# type 模板的类型:page,model,service # namespace 模板名称 Usage: ironman merge <type> <namespace> Example:ironman new page banklist ironman new model banklist ironman new service banklist
分支merge命令
1.设置全局gitlab的token
在http://git.scm.ppmoney.com/profile/account
中找到你的Private token
,设置git config --global --add gitlab.token 'your gitlab token'
2.合并分支命令
# soucheBranch为合并的源分支 # targetBranch为合并的目标分支 Usage: ironman merge <soucheBranch> <targetBranch> Example: ironman merge my-branch release-branch
3.发起merge-request请求命令
# -s 为发起merge-request请求的源分支 # -t 为发起merge-request请求的目标分支 # -m 为发起merge-request的标题 Usage: ironman merge-request -s <sourceBranch> -t <targeBranch> -m <title> Example: ironman merge-request -s release-request -t release -m "my merge"
自动发版功能
Usage: ironman version
该功能会让你去选择更新版本类型并修改版本号和打tag,并且生成commit记录的CHANGELOG.md
,建议在npm publish
触发前使用,可在package.json
的script
里添加prepublishOnly: ironman version
的钩子
Usage: ironman version --push
将当前分支推送到远程,用于npm publish
后触发,可添加postpublish: ironman version --push
钩子
jenkins 配置
测试环境
init脚手架后会自动创建jenkins项目,可在http://fe-jks-dev.ppmoney.com/job/${projectName}/
浏览
正式环境
正式环境需要手动执行构建,
如需配置jenkins,可联系组长配置
Jenkins 配置可参考:http://jenkins.scm.ppmoney.com/view/%E5%89%8D%E7%AB%AF%E4%B8%93%E7%94%A8/job/h5-taskcenter/
业务端接入
新项目:
- 新建gitlab组仓库,提供gitlab组的id,后续搭建的脚手架项目会在这个组下创建仓库并关联 ;
- 新建jenkins业务端面板,提供面板地址 ;
- 新建sentry团队 ;
- 提供jenkins构建消息发送的钉钉群机器人accessToken ;
以上配置提供给ironman开发者进行相应的配置和接入,然后在使用ironman init
选择属于自己的业务类型即可
旧项目:
1.对接gitlab
-
在组仓库下新建gitlab仓库
-
关联这个远程gitlab仓库
cd existing_foldergit initgit remote add origin http://myname@git.scm.ppmoney.com/myname/my-project.gitgit add .git commitgit push -u origin master
2.对接jenkins
- 在相应的业务端面板新建jenkins项目
- 在jenkins进行相关的配置
- 对接webhook
3.对接sentry
-
在sentry后台管理面板新建sentry项目
-
在项目根目录添加
.sentryrc
文件
[auth]token=5c805388296e45daa467cee842f2c043dd86999f98c942bcbc10d6216de707a9 [defaults]org=sentryurl=https://sentry.ppmoney.comproject=h5-mobile # sentry后台对应的项目名称 sourcemap_upload_url=http://ppcop.ppmoney.complatform=ppmoney # 业务端
- 添加版本绑定和添加sourcemap上传,在项目上传发布前执行
ironman sentry releases --dist=/dist --baseTag --uploadSourcemaps
4.上线部署
- 添加
ironman.config.js
配置文件
moduleexports = "ppava": "name": "umi" //项目名称 "platform": "ppmoney" //业务端 "title": "页面标题" "config": {}注入到视图的配置 'url': 'https://h5-dev.ppmoney.com' //上传的PPava地址 "dist": "/dist/**" //静态资源 "document": '/dist/index.html' //视图文件 'useUpyun': true //是否开启又拍云,默认为false,true时将静态资源上传至对应platform的又拍云空间:/PPava/${platform}/${name}下,false时上传至PPava服务器
ironman.{IRONMAN_ENV}.js,将与默认配置合并,得到对应环境的配置
- 将打包文件发送到服务器部署,部署脚本添加
ironman upload
命令