首页/文章/前端工具

搭建前端脚手架

2024-05-07
343 字约 2 分钟
...

需求: 公司里前端初始项目有多个比如: 管理系统、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、template由promptsOptions决定。

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

拉取代码

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

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 文件所有的依赖文件,通过递归的方式层层分析后,得到整个项...
学习
http-网络2026-10-15
OAuth 2.0是什么,以及如何正确接入
一、先从一个需求理解 OAuth 2.0 假设你开发了一个相册整理工具,用户希望它读取某个云盘里的照片。 把云盘密码交给工具,会带来几个问题:工具拿到的权限太大,密码可能泄漏,用户也难以只撤销这个工具的访问。 OAuth 2.0 提供一套 委托授权机制 :用户在云盘自己的页面确认授权,工具取得一个有权限范围和有效期的访问令牌,再用它调用云盘 API。用户的云盘密码不交给工具。 可以把它理解为:给工具一张“限定用途的通行证”。但令牌泄漏同...
学习
前端2026-10-15
前端动画全景指南
一、前端动画到底是什么 前端动画,就是让画面随时间、用户输入或页面状态连续变化。变化的对象可以是按钮的位置、弹窗的透明度、SVG 的线条、Canvas 里的粒子,也可以是三维场景中的镜头。 先把三个问题分开: | 问题 | 常见答案 | | | | | 画什么? | DOM/CSS、SVG、Canvas 2D、GPU 渲染的场景、预制动画素材 | | 怎样变化? | CSS 过渡/关键帧、Web Animations API、逐帧计算、...
学习

评论

请登录后发表评论

去登录
加载评论中...

目录