plop代码生成器

  1. 微生成器:项目中有很多代码是重复的、例如创建 home/Home.tsx home/home.scss home/index.tsx 创建about也有这些文件,就可以使用plop一键生成
  2. 脚手架:公司做项目,基本的项目结构是一样的:路由配置、路由拦截、登录认证、基本样式等;使用 plop 就不用每次新建一个项目就拷贝之前的项目,然后修修改改,而是使用命令生成一个基本的项目(还可以对这个基本框架项目进行不断优化迭代)

一、安装依赖

bash 复制代码
npm install --save-dev plop

二、创建模板文件

在项目根目录下新建 plop-templates 文件夹,再创建 page 子文件夹,里面放三个模板文件: page/Dashboard.tsx.hbs page/index.tsx.hbs page/dashboard.scss.hbs 模板内容示例(使用 Handlebars 语法):

plop-templates/page/Dashboard.tsx.hbs

hbs 复制代码
// Dashboard.tsx.hbs
import React from 'react';
import './dashboard.scss';

const {{pascalCase name}}: React.FC = () => {
  return (
    <div className="{{kebabCase name}}">
      <h1>{{pascalCase name}} Page</h1>
      {/* 你的内容 */}
    </div>
  );
};

export default {{pascalCase name}};

plop-templates/page/index.tsx.hbs

hbs 复制代码
// index.tsx.hbs
export { default } from './{{pascalCase name}}';

plop-templates/page/dashboard.scss.hbs

hbs 复制代码
// dashboard.scss.hbs
.{{kebabCase name}} {
  // 你的样式
}

三、配置 plopfile.js

根目录下创建 plopfile.js 文件

js 复制代码
export default function (plop) {
  plop.setGenerator('page', {
    description: '创建一个新页面',
    prompts: [
      {
        type: 'input',
        name: 'name',
        message: '请输入页面名称(如 dashboard):',
      },
      {
        type: 'input',
        name: 'path',
        message: '请输入页面路径(如 admin):',
        default: 'pages',
      },
    ],
    actions: [
      {
        type: 'add',
        path: 'src/pages/{{path}}/{{name}}/{{pascalCase name}}.tsx',
        templateFile: 'plop-templates/page/Dashboard.tsx.hbs',
      },
      {
        type: 'add',
        path: 'src/pages/{{path}}/{{name}}/index.tsx',
        templateFile: 'plop-templates/page/index.tsx.hbs',
      },
      {
        type: 'add',
        path: 'src/pages/{{path}}/{{name}}/{{kebabCase name}}.scss',
        templateFile: 'plop-templates/page/dashboard.scss.hbs',
      },
    ],
  });
};

四、添加脚本到 package.json

json 复制代码
"scripts": { 
    "plop": "plop" 
}

五执行命令生成模版

bash 复制代码
npm run plop

按提示输入生成文件名称,路径(路径/会在pages下生成名称的文件夹以及里面的几个基础文件)

相关推荐
平头哥技术团队1 小时前
Day 16 | 用 ul、ol、li 一个标签,把散资料收成有序的技能清单页
开发语言·前端·html·html5
代码青铜z1 小时前
不会写代码做小程序,模板开发和AI 编程靠谱吗?创业前先看这 5 件事
前端
小傅哥1 小时前
Java + DDD,1:1 复刻 Deepseek Harness 项目
前端·后端·ai编程
积硅步致千里2 小时前
Word 里的 .wmf 其实是 EMF:一次 metafile 转 PNG 排障
前端·后端
mayaairi2 小时前
Vue2 组件通讯(二):ref、自定义事件与provide/inject实战
前端·javascript·vue.js
开开心心就好2 小时前
PDF图片去水印软件,支持批量处理页面
前端·javascript·人工智能·智能手机·pdf·语音识别
爱敲代码的小杨.2 小时前
【Spring】Spring Web MVC
前端·spring·mvc
是立不是利2 小时前
深入理解JavaScript事件委托
开发语言·前端·javascript
晴天162 小时前
React 版本迭代解析:从15到19 核心差异-Day40
前端·react.js·前端框架
APItesterCris3 小时前
告别人工盯品!借助 Open‑Claw 快速搭建电商商品全自动监控与数据分析系统(完整实操代码)
java·大数据·前端·数据库