crtp-cli v0.0.14-beta.8
crtp-cli
overview
管理模板文件/目录的工具。
目标:根据模板快速创建文件。
feature
- 初始化项目
- 初始化文件
- 添加自定义模板文件(或目录)
- 列出自定义模板文件(或目录)
- 查询自定义模板文件(或目录)
- 删除自定义模板文件(或目录)
install
npm i crtp-cli -g
usage
# 在指定目录创建一个指定的模板文件
crtp initFile readme.md --file ./first/readme.md
# 添加自定义的模板文件
crtp addFile first.json --file ./first/projName/package.json
# 创建express&ts的应用。需要先安装yarn
crtp initProject --projectName first
configuration
暂时不需要它
默认配置文件:<root>/crtp.config.js
api
<>
为必填项[]
为选填项
command | options | value | 说明 | demo | version | ||
---|---|---|---|---|---|---|---|
-v, --Version | 列出当前版本 | ||||||
init | 生成配置文件 | 0.0.14-beta.4- | |||||
initFile | 以指定模板文件为模板创建文件。 | ||||||
<fileType> | 模板文件名 | ||||||
--file file... | 目标文件路径 | ||||||
-st, --macroSubstitution | 用于宏替换。用空格分开源与目标,多对替换之间用空格分割。若源与目标不成对,则忽略。 | crtp initFile a.md --macroSubstitution a b c d e -- 表示:把a替换为b,把c替换为d,忽略e。 | v0.0.6 | ||||
--registry registry | npm(default), yarn, tencent, cnpm, taobao, npmMirror, guazi | .npmrc的注册器 | crtp initFile .npmrc --registry cnpm | 0.0.9 | |||
addFile | 把指定文件设置为模板文件 | ||||||
<filename> | 模板文件名 | ||||||
--[file] <file> | 要成为模板文件的路径 | ||||||
addFragment | 按指定碎片目录生成碎片文件。todo | ||||||
initDir | 按指定模板目录生成目录 | ||||||
<dirName> | 模板目录名 | ||||||
--dir [dir...] | 目标目录名 | ||||||
addDir | 把指定目录设置为模板目录 | ||||||
<dirName> | 模板目录名 | ||||||
--dir <dir> | 要成为模板目录的路径 | ||||||
list / ls | 列出所有模板文件+碎片文件 | ||||||
isExistFile | 查询指定模板文件是否存在 | ||||||
<filename> | 模板文件名 | ||||||
delFile | 删除指定模板文件 | ||||||
<filename> | 模板文件名 | ||||||
delDir | 删除指定模板目录 | 待开发 | |||||
initProj | 待完善 | ||||||
<projName> | |||||||
--path | |||||||
--packageName | |||||||
--packageVersion | |||||||
--packageMain | |||||||
--lernaInit | |||||||
--readme | |||||||
--no | |||||||
--gitignore | |||||||
--no | |||||||
ip | 在当前目录中执行若干工程化命令 | ||||||
--npmrc | boolean 默认为true | 是否生成 .npmrc 文件 | |||||
--prettier | boolean 默认为true | 是否生成.prettierignore .prettierrc.json | |||||
--readme | boolean 默认为true | 是否生成 readme.md | |||||
initProject | 创建express&ts的应用 | ||||||
--dir | 默念 ./ | 指定应用所在的目录 | |||||
--projectName | 默认 project-name | 应用的名称 | |||||
--start | 默认 false | 在创建成功后是否启动项目 | |||||
insert | 在指定的文件中插入代码片段(亦称“碎片”) | 0.0.14-beta.2+ 非gamma有效。 | |||||
<fragment> | 指定碎片 | ||||||
--file | 指定文件 |
模板文件(或目录)
用于初始化文件。 已内置的模板文件:
- readme.md
- demo.md
- .gitignore
- vue3.vue
界碑说明
在内置的vue3.vue
文件中有若干注释,用于标记特定位置。在下文中称为界碑。
界碑是不能删除的。
<template> 使用组件
<div>MsBaseComp</div>
</template>
<script lang="ts">
// utils 引入工具类方法
import {
defineComponent,
ref,
onMounted,
} from 'vue'
// components 引入组件
// import { MsButton } from 'ms-ui'
// check 引入校验方法
// config 引入配置项
// directives 引入指令
// data 引入数据
// hooks 引入钩子
// import { useRouter } from 'vue-router'
// type/interface 引入类型
// custom 本vue文件级的数据、方法等。
export default defineComponent({
name: 'MsBaseComp', 组件名
// components: { 声明组件
// MsButton,
// },
// directives 声明指令
// inheritAttrs: false,
props: {
// fieldKey: {
// type: String,
// default: '',
// },
},
// emits: ['blur'],
setup() // props, ctx setup方法
{
// inject 定义注入者
// hooks 定义钩子
// variable 定义变量
// let clog = console.log
// ref 定义响应式对象
let elementRef = ref()
// computed 定义计算类对象
// provide 定义提供者
// methods 定义方法
let init = () => {
}
// event fn 定义事件的回调方法
// watch 定义监听器。watch/watchEffect
// lifeCircle 定义生命周期方法
onMounted(() => {
init()
})
// exec 在setup中执行的方法
return {
// variable 输出变量
// ref 输出响应式对象
elementRef,
// computed 输出计算类对象
// methods 输出方法
// event fn 输出事件回调方法
}
}
})
</script>
<style lang="less" scoped> 定义样式
</style>
碎片文件
适用范围
目标文件中的相关界碑。
字段说明
interface template {
position: 'end' // 在template内的最后插入
content: string // 插入的内容
}[]
interface script {
position: 'setup.ref' // 在setup方法内的ref界碑处追加
| 'setup.event' // 在setup方法内的event fn界碑处追加
| 'setup.return.ref' // 在setup方法的return内的ref界碑处追加
| 'setup.return.event' // 在setup方法的return内的event fn界碑处追加
| 'custom' // 在custom界碑处追加。一般不要在这里写代码。
content: string
}[]
interface style {
position: 'end' // 在style内追加
content: string
}[]
interface check {
importUtils?: {
[k: string]: string[]
}
importComponents?: {
[k: string]: string[]
}
type?: {
[k: string]: string[]
}
components?: string[]
}
principle
初始化项目
使用child_process
调用npm init -y
。现修改package.json。
操作模板文件
在此包的<root>/assets/
中保存着模板文件。初始化时从此读取再写入指定位置。添加时从指定位置读取再写入此目录。
uml
暂无
todo
crtp-cli中的配置从配置文件中得到后与用户设置的配置合并后再使用。 使用loadFile引入文件(包括配置文件)。它是generator方法。 配置文件
在配置文件中为指定的模板文件设置插件列表。
为指定的基本设置插件。pluginFn(content) -> contentOther
使用配置文件中指定的包管理工具
可开发插件。 接入测试工具
本项目中基于各开发类框架开发。为它们提供配置文件。或在一个目录中统一管理配置文件,或…… 开发模块的顺序 优先级 cli > crtp.config.js > 默认配置 支持 cli / js 验证配置文件是否正确
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
6 months ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago