crtp-cli

0.0.14-beta.8 • Public • Published

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] [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 在指定的文件中插入代码片段(亦称“碎片”)
<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 验证配置文件是否正确

Package Sidebar

Install

npm i crtp-cli

Weekly Downloads

1

Version

0.0.14-beta.8

License

ISC

Unpacked Size

115 kB

Total Files

46

Last publish

Collaborators

  • feigebaobei