写个自己的vue-cli

写个自己的vue-cli

  • 1.插件代码
  • 2. 发布流程
  • 3. 模板代码讲解
    • 3.1 vue2模板的运行流程:
    • 3.2 vue3模板的运行流程:

1.插件代码

写一个自己的vue-cli插件
插件地址:插件地址
流程:

实现简单版 vue-cli 步骤文档1. 项目初始化
- 创建项目文件夹 qsl-vue-cli
- 初始化 package.json  //npm init -y
- 安装必要的依赖包:* commander (命令行工具) 作用:解析命令行参数,执行相应的命令* inquirer (交互式命令行) 作用:收集用户输入信息* download-git-repo (下载模板) 作用:下载模板* chalk (命令行美化) 作用:美化命令行输出* ora (加载动画) 作用:显示加载动画* fs-extra (文件操作) 作用:文件操作//npm install commander inquirer download-git-repo chalk ora fs-extra2. 创建基本目录结构
/qsl-vue-cli├── bin/              # 可执行文件目录│   └── cli.js       # 入口文件├── lib/             # 核心逻辑目录│   ├── create.js    # 项目创建逻辑│   └── generator.js # 模板生成逻辑├── template/        # 项目模板目录└── package.jsonmkdir bin lib template
touch bin/cli.js lib/create.js lib/generator.js3. 实现核心功能
a) 配置 package.json
- 设置 bin 字段,指定可执行文件
- 添加必要的脚本命令"bin": {"qsl_vue_cli": "./bin/cli.js"
}bin/cli.js 文件开头添加 shebang(作用:指定脚本解释器)
#! /usr/bin/env node
将脚手架链接到全局
npm link (将当前项目链接到全局,为什么要链接到全局?
1. 命令行全局可用
当我们开发一个 CLI 工具时,希望在终端的任何位置都能使用这个命令
比如我们想在任何目录下都能执行 qsl_vue_cli create project-name
如果不链接到全局,就只能在项目目录下使用这个命令
2. 开发调试方便
在开发过程中,我们需要频繁测试 CLI 命令
npm link 创建一个符号链接,指向我们的开发项目
这样修改代码后可以立即测试效果,不需要每次都重新安装
3.模拟 npm 全局安装
最终用户会通过 npm install -g qsl_vue_cli 全局安装我们的工具
npm link 在开发阶段模拟了这种全局安装的效果
帮助我们验证工具在真实环境中的表现
)b) 实现命令行工具 (bin/cli.js)
- 配置 commander* 引入 commander const { program } = require('commander');* 创建 commander 实例program.version('1.0.0').description('A simple vue cli tool').usage('<command> [options]');* 添加 create 命令program.command('create <project-name>').description('Create a new Vue project').action((projectName) => {console.log(`Creating project ${projectName}`);
});
- 实现基本命令:createc) 实现项目创建逻辑 (lib/create.js)
- 收集用户输入信息
- 验证项目名称
- 处理已存在目录的情况d) 实现模板生成器 (lib/generator.js)
- 下载模板
- 修改模板配置
- 生成项目文件4. 创建基础模板
- 创建一个基础的 Vue 项目模板
- 包含必要的项目结构和配置文件5. 测试与优化
- 本地测试命令行工具
- 处理错误情况
- 优化用户体验6. 发布
- 完善 README.md
- 发布到 npm

2. 发布流程

发布更新流程看这里怎么把自己的包发布到npm。

3. 模板代码讲解

3.1 vue2模板的运行流程:

执行命令npm run serve:
启动 vue-cli-service serve
编译项目代码
启动开发服务器(默认端口 8080)
启用热重载
构建过程:
webpack 通过 vue-loader 处理 .vue 文件
babel-loader 转译 JS 代码
处理样式、图片等资源
生成开发服务器所需的文件
浏览器中:
加载index.html(在 Vue CLI (Vue 2 模板) 中,index.html 的处理是通过 webpack 的 html-webpack-plugin 插件完成的,这个插件是 @vue/cli-service 内部配置好的。
// @vue/cli-service 内部配置
new HtmlWebpackPlugin({
template: ‘public/index.html’, // 指定模板文件
filename: ‘index.html’, // 输出文件名
inject: true // 自动注入打包后的 JS 和 CSS
})
)
执行打包后的 JS
Vue 实例创建并挂载到 #app
渲染页面内容

3.2 vue3模板的运行流程:

让我更详细地解释 Vue 3 + Vite 的运行流程:

  1. 启动开发服务器
    当运行 npm run dev 时:
    Vite 会:
    启动一个开发服务器(默认端口 5173)
    监听文件变化
    准备处理浏览器的各种请求
  2. 首次加载(当访问 http://localhost:5173/ 时Vite 会自动返回根目录下的 index.html)
    浏览器请求 index.html:
  3. 处理主入口文件
    浏览器请求 main.js:
    Vite 会:
    拦截对 vue 的导入,返回预构建的 vue 模块
    处理 App.vue 的导入请求
  4. 处理 Vue 组件
    当请求 App.vue 时:
  5. Vite 插件处理
    通过 vite.config.js 配置的插件处理各种文件:
    具体处理流程:
    模板编译:
    解析 template 为虚拟 DOM 渲染函数
    处理指令和插值语法
    脚本处理:
    处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/67917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构初阶---排序

一、排序相关概念与运用 1.排序相关概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的…

系统看门狗配置--以ubuntu为例

linux系统配置看门狗 以 ubuntu 系统配置看门狗为例 配置看门狗使用的脚本文件&#xff0c;需要使用管理员权限来执行&#xff1a; 配置是&#xff1a;系统每 30S 喂一次狗&#xff0c;超过 60S 不进行投喂&#xff0c;就会自动重启。 1. 系统脚本内容&#xff1a; #!/bin/b…

opencv的NLM去噪算法

NLM&#xff08;Non-Local Means&#xff09;去噪算法是一种基于图像块&#xff08;patch&#xff09;相似性的去噪方法。其基本原理是&#xff1a; 图像块相似性&#xff1a;算法首先定义了一个搜索窗口&#xff08;search window&#xff09;&#xff0c;然后在该窗口内寻找…

Docker运维高级容器技术知识点总结

1、虚拟机部署和容器化部署的区别是什么&#xff1f; 1、技术基础&#xff1a; <1>.虚拟化技术在物理硬件上创建虚拟机&#xff0c;每台虚拟机运行自己完整的操作系统、从而实现资源隔离。 <2>.容器化技术&#xff1a;将应用程序打包在容器内&#xff0c;在进程空间…

双模充电桩发展前景:解锁新能源汽车未来的金钥匙,市场潜力无限

随着全球能源转型的浪潮席卷而来&#xff0c;新能源汽车行业正以前所未有的速度蓬勃发展&#xff0c;而作为其坚实后盾的充电基础设施&#xff0c;特别是双模充电桩&#xff0c;正逐渐成为推动这一变革的关键力量。本文将从多维度深入剖析双模充电桩的市场现状、显著优势、驱动…

python3GUI--大屏可视化-传染病督导平台 By:PyQt5

文章目录 一&#xff0e;前言二&#xff0e;预览三&#xff0e;软件组成&开发心得1.样式&使用方法2.左侧表格实现3.设计4.学习5.体验效果 四&#xff0e;代码分享1.环形渐变进度组件2.自定义图片的背景组件 五&#xff0e;总结 大小&#xff1a;60.9 M&#xff0c;软件…

某漫画网站JS逆向反混淆流程分析

文章目录 1. 写在前面1. 接口分析2. 反混淆分析 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Pyth…

ffmpeg aac s16 encode_audio.c

用ffmpeg库时&#xff0c;用代码对pcm内容采用aac编码进行压缩&#xff0c;出现如下错误。 [aac 000002bc5edc6e40] Format aac detected only with low score of 1, misdetection possible! [aac 000002bc5edc8140] Error decoding AAC frame header. [aac 000002bc5edc81…

深度学习的原理和应用

一、深度学习的原理 深度学习是机器学习领域的一个重要分支&#xff0c;其原理基于多层神经网络结构和优化算法。以下是深度学习的核心原理&#xff1a; 多层神经网络结构&#xff1a;深度学习模型通常由多层神经元组成&#xff0c;这些神经元通过权重和偏置相互连接。输入数据…

mv指令详解

&#x1f3dd;️专栏&#xff1a;计算机操作系统 &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 基本语法 主要功能 常用选项详解 1. 移动文件或目录 2. 重命名文件或目录 3. -i&am…

5 分布式ID

这里讲一个比较常用的分布式防重复的ID生成策略&#xff0c;雪花算法 一个用户体量比较大的分布式系统必然伴随着分表分库&#xff0c;分机房部署&#xff0c;单体的部署方式肯定是承载不了这么大的体量。 雪花算法的结构说明 如下图所示: 雪花算法组成 从上图我们可以看…

怎么实现Redis的高可用?

大家好&#xff0c;我是锋哥。今天分享关于【怎么实现Redis的高可用&#xff1f;】面试题。希望对大家有帮助&#xff1b; 怎么实现Redis的高可用&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 为了实现 Redis 的高可用性&#xff0c;我们需要保证在发…

牛客网刷题 ——C语言初阶(6指针)——BC106 上三角矩阵判定

1. 题目描述——BC106 上三角矩阵判定 牛客网OJ题链接 描述 KiKi想知道一个n阶方矩是否为上三角矩阵&#xff0c;请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵&#xff0c;主对角线为从矩阵的左上角至右下角的连线。 示例 输入&#xff1a; 3 1 2 3 0 4 5 0 0…

H266/VVC 帧内预测中 ISP 技术

帧内子划分 ISP ISP 技术是在 JVET-2002-v3 提案中详细介绍其原理&#xff0c;在 VTM8 中完整展示算法。ISP是线基内预测&#xff08;LIP&#xff09;模式的更新版本&#xff0c;它改善了原始方法在编码增益和复杂度之间的权衡&#xff0c;ISP 算法的核心原理就是利用较近的像…

了解npm:JavaScript包管理工具

在JavaScript的生态系统中&#xff0c;npm&#xff08;Node Package Manager&#xff09;无疑是一个举足轻重的存在。它不仅是Node.js的包管理器&#xff0c;更是前端开发不可或缺的一部分&#xff0c;为开发者提供了丰富的包资源、便捷的包管理以及强大的社区支持。本文将深入…

CNN Test Data

由于数据量过大&#xff0c;打不开了 搞一组小的吧。收工睡觉 https://download.csdn.net/download/spencer_tseng/90256048

协同过滤算法商品推荐系统|Java|SpringBoot|VUE|

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SpringBoot、Mybatis-Plus、VUE、jquery,html 5⃣️…

初学stm32 --- DMA直接存储器

目录 DMA介绍 STM32F1 DMA框图 DMA处理过程 DMA通道 DMA优先级 DMA相关寄存器介绍 F1 DMA通道x配置寄存器&#xff08;DMA_CCRx&#xff09; DMA中断状态寄存器&#xff08;DMA_ISR&#xff09; DMA中断标志清除寄存器&#xff08;DMA_IFCR&#xff09; DMA通道x传输…

Routine Load 导入问题处理指南

Routine Load 导入问题处理指南 在使用 Apache Doris 的 Routine Load 时&#xff0c;你是否曾经被各种奇奇怪怪的问题卡住&#xff1f;今天就来分享一些最常见的 Routine Load 问题&#xff0c;并提供相应的解决方案&#xff0c;让你快速应对&#xff0c;高效解决&#xff01;…

【面试题】技术场景 6、Java 生产环境 bug 排查

生产环境 bug 排查思路 分析日志&#xff1a;首先通过分析日志查看是否存在错误信息&#xff0c;利用之前讲过的 elk 及查看日志的命令缩小查找错误范围&#xff0c;方便定位问题。远程 debug 适用环境&#xff1a;一般公司正式生产环境不允许远程 debug&#xff0c;多在测试环…