damonfang-cli
v1.0.3
Published
npx lerna init npx lerna create cli npm link 发布cli到本地为脚本创建执行环境 <!-- 配置入口文件 --> npx lerna add import-local packages/cli npx lerna add npmlog packages/cli <!-- 创建基础命令 封装执行命令 --> npx lerna add commander packages/cli class InitCommand extends Command <!-- 封装命
Downloads
3
Readme
npx lerna init npx lerna create cli npm link 发布cli到本地为脚本创建执行环境
npx lerna add import-local packages/cli npx lerna add npmlog packages/cli
npx lerna add commander packages/cli class InitCommand extends Command
npx lerna create command npx lerna create init npx lerna create utils
cjs兼容esm const esm = import('esm').then(esm => esm.default()) (require同步 import异步 合在一起用同步需要包一层立即执行函数) esm直接引用cjs (packagejson中指定type:module类型 需要指定引用文件后缀 需要处理JSON文件解析[fs-extra] 需要处理注入变量__filename等等)
npx lerna add jest packages/cli --dev npx lerna add execa packages/cli --dev npx lerna add @babel/preset-env packages/cli --dev npx lerna add @babel/core packages/cli --dev 添加babel.config.js 兼容高版本 添加jest.config.js 解析jest语法 packagejson中配置test运行脚本
使用的模板要放在发布的模板里面(如果合在一起, 发布的一些配置会污染使用的模板)
在init模块包里完成create download install 创建:生成模板的的基本对象信息 下载:从对象信息中去下载模板 安装:把模板拷贝到工作目录下(下载到本地的模板会自动生成node_modules和packagejson文件,并且包安装在node_modules下面,如果直接在工作目录下安装会很乱)
homedir() 读取用户主目录 process.cwd() 读取当前目录 path.join(path, 'dir/file') 拼接路径 path.resolve(homedir(), 'dir/file') 拼接绝对路径 pathExsitSync(path) fs.existsSync 文件是否存在 fse.mkdirpSync(dir) fse.ensureDirSync(dir) 创建文件夹 fse.removeSync(dir) 删除文件夹 fse.readdirSync(dir) 读取文件夹 fse.writeFileSync fs.writeFileSync 写文件 fse.copyFile(sourceDir/file, distDir/file) 拷贝文件夹/文件 glob(pattern, options) 过滤文件夹/文件
https://docs.github.com/en/rest https://github.com/settings/tokens https://gitee.com/api/v5/swagger#/getV5ReposOwnerRepoStargazers?ex=no https://gitee.com/profile/personal_access_tokens https://docs.gitlab.com/ee/api/users.html https://www.buctpse.cn/-/profile/personal_access_tokens
token时间会过期 github group项目有时会10054 403更新不上 gitlab group项目默认主分支是main,需要额外兼容(todo)或者管理员配置master为默认主分支(组里的项目不可修改)
node: 16.18.0
安装: npm install -g @damonfang/cli 使用:(模板里必须要有env相关文件还有viteconfigjs中配置的指向env文件内容) [template example] damonfang-cli init damonfang-cli init -t project -tp template-vite -pr aaa -tr test-aaa [commit example]: damonfang-cli commit 发布dev damonfang-cli commit -p 发布release tag
脚手架有修改 npx lerna publish 模板有修改 npm publish
触发条件: push master(会触发master分支) damonfang-cli commit | push dev/* (会触发dev分支) damonfang-cli commit -p(会触发dev分支和master分支)
搭建项目(模板 提交 发布): 1 damonfang-cli init -t project -tp template-vite -pr aaa -tr test-aaa (如果没有传递pr和tr 1.修改.env文件的子路径 2.修改yml文件中的发布目录) 2 damonfang-cli commit -c -p 3 代码平台配置CICD变量 TENCENT_SERVER_HOST TENCENT_SERVER_PASSWORD 4 服务器注册项目执行的runner (注册 gitlab-runner register --url https://www.buctpse.cn/--registration-token GR1348941kRnpy2TjQkACR2JyxpcC) (删除 先在git平台删除runner 在到服务器上执行gitlab-runner verify --delete --name sth 删除不掉直接修改toml配置文件) 5 服务器配置nginx代理 6 手动触发
- 模板放在template目录下,按照其他模板相同的目录结构进行放置
- npm publish
- 在cli-common目录的init包里的createTemplate文件中修改templateList,配置npm包地址然后修改包version(init cli),还需要修改最外层的cli-common的version(package lerna)
- npx lerna publish(无反应可单独更新包)
todo
github创建仓库默认是main,需兼容 github action 和 gitlab.yml,需根据不同平台下载