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下生成名称的文件夹以及里面的几个基础文件)

相关推荐
windliang1 小时前
Claude Code 源码分析(十二):错误处理与自动恢复:让 Agent 稳定运行
前端·javascript·面试
fatcoder1 小时前
玩转Docker 06 — 容器网络
前端·后端·docker
打呵欠的猫1 小时前
我用 AI 重写了项目的请求层,从 800 行"面条代码"变成 3 层洋葱模型
前端·ai编程
默_笙1 小时前
🛬 前端路由的"高级玩法":懒加载、404、鉴权路由,一个都不能少(下篇)
前端·javascript
用户921080262862 小时前
1. Cesium 在 Vue 项目中的简单初始化配置
前端
YIAN2 小时前
从 Hash 底层原理到 React Router v6 实战:我学会了什么?
前端·react.js·vue-router
lv__pf2 小时前
Spring配置类解析 【TL spring 11】
java·前端·spring
AI分享猿2 小时前
UI设计Prompt系列(十三):响应式布局需求怎么写——让设计Prompt更接近前端实现
前端
ClouGence2 小时前
Selenium 写不动了?这个工具录一次就能跑 Web 自动化
前端·selenium·测试