plop一键生成文件,不需要每次都c+v了

1,139 阅读2分钟

简单介绍一下:Micro-generator framework that makes it easy for an entire team to create files with a level of uniformity.

翻译一下:plop就是一款小而精美的生成器框架,使得团队可以轻松地创建统一的文件。

通过yarn add plop --Dev安装好这个包

然后在项目的根目录touch plop.js 生成这个文件在package.json添加"plop": "plop --plopfile ./plop.js"

企业管理后台,很多crud页面,如果每次都手动复制,那太恶心了。

当然可以使用cp -r,但是无法定制一些数据,替换模板,而且复制完还要改里面文件的变量的名字,浪费时间,不然介绍这款框架就没意义了。

关键代码:

 plop.setGenerator('controller', {
    description: 'application controller logic',
    prompts: [
     {
        type: 'list', // 有很多类型可供参考,比如input,list,rawList等
        name: 'templateType',
        choices: [
          {
            name: '标准增删改查页面',
            value: 'crud-page',
            short: 'crud-page',
          }
        ],
        message: 'choose page type which you want to generate'
      },
    ]
 });
  • description,就是显示在控制台的描述
  • prompts,跟用户发生交互的列表,
  • actions,用户选择后触发的动作

给大家看看效果:

就是根据用户的选择,然后执行接下来的actions

actions有两种方式,一种是把actions定义成方法,另外一种是把actions定义成数组,因为管理后台有些比较个性化的需求,所以我这边使用了第一种,如下:

关于actions的type,也支持很多类型,分别有

  • add
  • addMany
  • modify
  • append
  • 你自定义的action

具体的每一种类型对应的具体参数,怕篇幅太长,就不一一罗列了,可以参考一下官方文档plop

上图中的双花括号是plop本身会替换掉的,会把命名自动转换成对应的格式,如下:

  • camelCase: changeFormatToThis
  • snakeCase: change_format_to_this
  • dashCase/kebabCase: change-format-to-this
  • dotCase: change.format.to.this
  • pathCase: change/format/to/this
  • properCase/pascalCase: ChangeFormatToThis
  • lowerCase: change format to this
  • sentenceCase: Change format to this,
  • constantCase: CHANGE_FORMAT_TO_THIS
  • titleCase: Change Format To This

更骚的是,它还能透传到读取的模版文件中,为自动生成页面提供更便捷的方法。

一般来说,简单的crud页面会有:

  1. 头部查询条件栏,很多查询条件,比如下啦选择,输入,日期选择等
  2. 表格部分,展示数据
  3. footer 分页器或者其它
  4. 对话框,表格可能需要修改数据,修改需要弹弹窗进行数据回显与修改

基于以上,得出一个文件夹模板

有了kebabCase就能规范html和vue的命名了

有了这个,可以最大程度的发挥自己的脑洞,想想自己平时做的很多重复的工作,最后都可以整合到这个文件夹,最后一键yarn plop生成所有文件,释放双手,剩下的就是填写接口地址,接口字段等。 最后生成的结果:

我这,算是青铜时代吗。。,总之,节省了我一半的时间,很舒服。。。