首页 > 其他分享 >plopjs 的基础使用方法

plopjs 的基础使用方法

时间:2022-10-19 11:14:46浏览次数:51  
标签:fs const projectName 基础 plopjs actions sorceProjectname path 方法

const fs = require('fs');
const path = require('path');
const actionsall = fs.readFileSync(path.resolve(__dirname, './commitApps.txt'), 'utf-8');
const nameDisablelist = fs.readFileSync(path.resolve(__dirname, './nameDisablelist.txt'), 'utf-8');
const sorceProjectname = fs.readFileSync(path.resolve(__dirname, './sorceprojectName.txt'), 'utf-8');
const all = JSON.parse(actionsall);
module.exports = function (plop) {
  plop.setGenerator('createWebapp', {
    description: '创建一个新的webapp项目',
    prompts: [
      {
        type: 'input',
        name: 'projectName',
        message: `请输入新项目文件夹名称请以${sorceProjectname.replace(sorceProjectname.split('-')[0], 'xxx')}命名`,
      },
    ],
    actions: function (data) {
      const projectName = data.projectName.trim();
      const actions = [];
      const nameRE = new RegExp('(\\-(' + sorceProjectname.split('-')[1] + '))$');
      if (projectName && nameRE.test(projectName) && !JSON.parse(nameDisablelist).includes(projectName)) {
        fs.writeFileSync(path.resolve(__dirname, './projectName.txt'), projectName);
        all.forEach(item => {
          const newitem = item.replace(sorceProjectname, projectName);
          if (/(.vue)$/.test(newitem)) {
            actions.push({
              type: 'add',
              path: `..${newitem}`,
              template: '',
              abortOnFail: false,
            });
          } else {
            actions.push({
              type: 'add',
              path: `..${newitem}`,
              templateFile: `..${item}`,
              abortOnFail: false,
            });
          }
        });
      } else {
        console.error(
          `注意: 请以${sorceProjectname.replace(
            sorceProjectname.split('-')[0],
            'xxx'
          )}命名, 且不能与webapp目录下已有项目名(现存:${JSON.parse(nameDisablelist).join(',')})重复`
        );
        process.exit(1);
      }
      return actions;
    },
  });
};

标签:fs,const,projectName,基础,plopjs,actions,sorceProjectname,path,方法
From: https://www.cnblogs.com/taxun/p/16805499.html

相关文章

  • 『现学现忘』Git基础 — 36、标签tag(一)
    目录1、标签介绍2、列出标签3、创建标签(1)标签的分类(2)附注标签(3)轻量标签4、后期打标签1、标签介绍软件的某个发行版本所对应的,其实就是软件开发过程中,某一个阶段的最后一......
  • vi命令基础
    一、vi的基本概念基本上vi可以分为三种状态,分别是命令模式(commandmode)、插入模式(Insertmode)和底行模式(lastlinemode),各模式的功能区分如下:1)命令行模式commandmode)......
  • 测试用例的设计方法与实战
    测试用例的设计方法分为常用和不常用:其中等价类划分法和边界值分析法是最常用的一定要理解会用,其他六种方法也要知道名称和大概的设计思路。等价类划分法是指将程序的输入......
  • 基础篇——JSX
    一、JSX用于描述UI的JavaScript扩展语法,是UI描述和UI数据之间的桥梁。1,语法JSX本质上还是JavaScript。①基本语法和XML语法相同,都是使用成对的标签构成一个树状结构的......
  • 发现bug的方法论
    5.1测试用例(testcase)①什么是测试用例(testcase)?是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求,其实也是......
  • 基础篇——组件
    二,组件1,组件有两种定义方式:class(类组件)和使用函数(函数组件)class:继承自React.Component内部必须定义render方法,返回该组件UI的React元素使用函数:接收props作为......
  • 基础组件(一)
    1.TextInput允许用户输入文本的基础组件.属性onChangeText 接受一个函数,而此函数会在文本变化时被调用。onSubmitEditing 在文本被提交后(用户按下软键盘上的提交键)调用 ......
  • 【高等数学基础进阶】微分中值定理及导数应用
    一、微分中值定理定理1(费马引理):如果函数$f(x)$在$x_{0}$处可导,且在$x_{0}$处取得极值,那么$f'(x_{0})=0$ 定理2(罗尔定理):若$f(x)$在$[a,b]$上连续$f(x)$在$(a,b)$......
  • confluence管理员密码恢复方法
    1、获取admin账户IDmysql>selectu.id,u.user_name,u.activefromcwd_useru\joincwd_membershipmonu.id=m.child_user_idjoincwd_groupgonm.parent_id=g.......
  • 203. 面向对象(上) 方法重载
    203.面向对象(上)方法重载方法的重载(overload)定义:在同一个类中,允许存在一个以上的同名方法,只要它的参数个数或参数类型不同即可."两同一不同":同一个类,相......