首页/文章/前端工具

搭建前端脚手架

2024-05-07
3432 分钟
...

需求: 公司里前端初始项目有多个比如: 管理系统、electron、h5... 每次新项目都需要去找仓库里对应的基建代码?于是准备自搭一个脚手架,实现新项目时直接使用脚手架创建对应项目的模板。

采用monorepo的模式来管理脚手架、在这里只提供核心代码实现,废话不多说开干!开干!

1、初始化项目

mkdir test_cli
pnpm iniit
touch index.js

2、修改package内容

{
  "name": "create-test_cli", 
  "version": "1.0.0",
  "description": "",
  "bin": "index.js", 
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "type": "module", 
  "author": "",
  "license": "ISC"
}

3、使用第三方包解析交互命令

使用prompts来解析命令,实现目标如通过vite创建项目,如图:

pnpm add prompts

index.js文件中


const promptsOptions = [
  {
    type: "text", 
    name: "name",
    message: "project-name",
    validate(val) {
      if (!val) return "模板名称不能为空!";
      if (fs.existsSync(val)) return "项目名已存在";
      return true;
    },
  },
  {
    type: "select", 
    name: "template",
    message: "select a framework",
    choices: [
      { title: "vue3-tdesign-white(纯净版管理系统)", value: "vue3tdWhite" },
    ],
  },
];

使用prompts(promptsOptions)会返回一个promise<{name, template}> ,对象中name、templatepromptsOptions决定。

现在有拿到用户输入的所有指令值,就可以进行对应的逻辑操作

拉取代码

拿到指令值后,对应去拉取仓库代码

const gitClone = (gitUrl, name, option) => {
  const downSpinner = ora("正在下载模板...").start();
  return new Promise((resolve, reject) => {
    download(gitUrl, name, option, (err) => {
      if (err) {
        downSpinner.fail();
        console.log("err", chalk.red(err));
        reject(err);
        return;
      }
      downSpinner.succeed(chalk.green("模板下载成功!"));
      console.log(`Done. Now run:\r\n`);
      console.log(chalk.green(`cd ${name}`));
      console.log(chalk.blue("npm install"));
      console.log("npm run dev\r\n");
      resolve();
    });
  });
};
const res = await prompts(promptsOptions);
const gitList = {
  vue3tdWhite: "http://****.git", 
};
const branch = "master"
gitClone(`direct:${gitList[res.template]}#${branch}`, res.name, {
    clone: true,
  });

需要用到的依赖包安装 download-git-repo 是拉取代码的作用 ora 作为loading状态

pnpm add ora download-git-repo

发布包

将包发布到npm上后直接执行

npm create test_cli 
或者
npm init test_cli 

结束了!

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
前端工具2024-05-08
以Babel为例,讲述插件的机制
Babel 是一个 JavaScript 编译器 Babel 是一个工具链,主要用于将采用 ECMAScript 2015+ 语法编写的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。下面列出的是 Babel 能为你做的事情: 语法转换 通过 Polyfill 方式在目标环境中添加缺失的功能(通过引入第三方 polyfill 模块,例如 ) 源码转换(codemods) Babel 和...
学习
前端工具2024-05-07
实现自定义脚手架
首先,每次创建项目后都需要很多重复性操作,比如安装UI库、css预处理器。在业务层面,每次也要添加一些必备的功能,比如登录、404页面等。其次,可以锻炼自己的技术。 脚手架创建项目的流程: 1. 让用户选择模板; 2. 根据用户输入填充模板; 3. 下载模板文件到创建的新文件夹中; 从框架来看,创建项目的时候需要选择是vue框架还是react框架,以及是否需要添加 typescript。 从插件来看,需要安装UI库、CSS预处理器、路由...
学习
前端工具2023-12-27
汇总前端脚手架开发中常用的第三方库
在前端工程化方面我们使用的各种工具,绝大部分都是使用 写的。 比如,打包工具 webpack 及 rollup;前端框架 Vue 自带的脚手架工具 vue cli;以及 CSS 样式工具scss、less等等。 在日常工作中难免会遇到一些需求,需要自己创建一个脚手架工具来提升整个团队的研发部署效率。 目前,npm上汇集了大量优秀的开发脚手架的第三库,熟练掌握这些库,可以大大提升我们的开发效率。本文将介绍一些在开发前端脚手架方面非常常用的...
学习
前端工具2023-09-21
面试官:”Vite为什么快?“
面试官:”Vite为什么快?“ 阅读8分钟 前面一篇文章介绍了如何做 Vite 的插件开发 ,这篇文章介绍清晰 Vite 的构建原理,为什么比 Webpack 构建速度快这么多。 1\. 一句话解释 Webpack 的构建原理 前端之所有需要 类似于 Webpack 这样的构建工具,是为了提高项目的开发效率,Webpack 通过分析js中的 require 语句,分析出当前 js 文件所有的依赖文件,通过递归的方式层层分析后,得到整个项...
学习
AI2026-09-01
Deep Agents 01:何为 Agent Harness,以及如何开始
1、本篇任务:完成一份多步骤、带证据的技术调研 普通客服 Agent 的问题短、工具少、输出即时。技术调研或编码任务会持续很久,产生计划、搜索结果、文件和中间结论。Deep Agents 在 LangChain/LangGraph 之上预装规划、虚拟文件系统、上下文压缩和子 Agent,适合这类开放任务。 本课让 Agent 比较两种向量数据库,并交付一份可验证报告。 2、什么时候需要 Deep Agent 满足以下两项以上再考虑:任务...
学习
AI2026-09-01
Deep Agents 02:子 Agent、虚拟文件系统与长期记忆
1、本篇任务:让主管只看结论,让子 Agent 处理细节 技术调研会产生几十次搜索和大量文件。如果全部进入主管上下文,真正的目标会被噪音淹没。本课用两个子 Agent: 收集证据, 检查结论;主管负责计划与最终合成。 2、什么时候委派,什么时候直接调用工具 适合委派:子任务有多步;需要专门提示或工具;会产生大量中间结果;只需返回有限结论。不适合:一步查询;主管需要全部中间上下文;协调成本超过任务本身。 3、配置专门子 Agent Pyt...
学习

评论

请登录后发表评论

去登录
加载评论中...

目录