从0-1搭建一个web项目vue3+vite+ts+element-plus(脚手架分析)

news2024/11/20 3:34:47

本章分析从0-1的搭建脚手架依赖

在这里插入图片描述

ObJack-Admin一款基于 Vue3.3、TypeScript、Vite3、Pinia、Element-Plus 开源的后台管理框架。在一定程度上节省您的开发效率。另外本项目还封装了一些常用组件、hooks、指令、动态路由、按钮级别权限控制等功能。感兴趣的小伙伴可以访问源码点个赞 地址

本文主要对packge.json文件进行详解 scripts、dependencies、devDependencies等配置项

  1. 创建项目

create vite 项目名称
  1. 脚本配置

项目脚本配置详解
在项目的 package.json 文件中,scripts 部分通常包含了各种命令和脚本,用于自动化项目的开发、构建、测试和部署等过程。下面是对一个典型的 scripts 配置的详细解释。

这里我先先看一下scripts的配置项

"scripts": {
    "dev": "vite",
    "serve": "vite",
    "build:dev": "vue-tsc && vite build --mode development",
    "build:test": "vue-tsc && vite build --mode test",
    "build:pro": "vue-tsc && vite build --mode production",
    "type:check": "vue-tsc --noEmit --skipLibCheck",
    "preview": "npm run build:dev && vite preview",
    "lint:eslint": "eslint --fix --ext .js,.ts,.vue ./src",
    "lint:prettier": "prettier --write \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"",
    "lint:stylelint": "stylelint --cache --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
    "lint:lint-staged": "lint-staged",
    "prepare": "husky install",
    "release": "standard-version",
    "commit": "git add -A && czg && git push"
  },
对于以上配置项有些可能不太理解 下面我对配置项进行了一一的解释方便大家在配置的时候进行选择
  • 开发环境
"dev":
命令: vite
描述: 使用 vite 启动开发服务器,进入开发模式。
"serve":
命令: vite
描述:"dev" 命令相同,通常用于与其他工具或框架的约定保持一致。
构建
"build:dev":
命令: vue-tsc && vite build --mode development
描述: 先使用 vue-tsc 进行 TypeScript 代码检查,然后使用 vite 进行构建,指定为开发模式。
"build:test":
命令: vue-tsc && vite build --mode test
描述:"build:dev" 类似,但指定为测试模式,可能生成用于测试环境的构建版本。
"build:pro":
命令: vue-tsc && vite build --mode production
描述: 进行生产模式的构建,首先进行 TypeScript 检查,然后生成优化过的构建版本。
类型检查
"type:check":
命令: vue-tsc --noEmit --skipLibCheck
描述: 使用 vue-tsc 进行 TypeScript 类型检查,但不生成输出,并跳过库的类型检查。
预览
"preview":
命令: npm run build:dev && vite preview
描述: 先运行 "build:dev" 命令进行开发模式的构建,然后使用 vite 
preview 命令启动一个预览服务器,以便查看构建后的应用。
代码检查与格式化
"lint:eslint":
命令: eslint --fix --ext .js,.ts,.vue ./src
描述: 使用 ESLint 对 ./src 目录下的 .js、.ts 和 .vue 文件进行代码风格检查,并尝试自动修复。
"lint:prettier":
命令: prettier --write "src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}"
描述: 使用 Prettier 对指定文件类型进行代码格式化,并直接写入文件。
"lint:stylelint":
命令: stylelint --cache --fix "**/*.{vue,less,postcss,css,scss}" --cache-location node_modules/.cache/stylelint/
描述: 使用 Stylelint 对指定的样式文件进行代码风格检查,并尝试自动修复,同时利用缓存提高性能。
"lint:lint-staged":
命令: lint-staged
描述: 使用 lint-staged 对 Git 暂存区中的文件运行指定的 linters,确保提交的代码符合项目的代码风格要求
Git 钩子与版本管理
"prepare":
命令: husky install
描述: 在 npm install 或 yarn install 时运行,使用 husky 安装 Git 钩子,以便在提交代码之前运行某些检查。
"release":
命令: standard-version
描述: 使用 standard-version 自动化版本管理和 CHANGELOG 的生成,用于发布新版本。
自定义命令
"commit":
命令: git add -A && czg && git push
描述: 一个自定义的提交命令,先添加所有更改,然后使用 czg(可能是 commitizen 的别名或自定义命令)指导用户编写符合规范的 commit message,最后推送更改到远程仓库。

总结:这些脚本配置为项目的开发、构建、测试和发布等各个阶段提供了方便的自动化命令,提高了开发效率。

  1. 项目依赖项详解

dependencies:项目依赖。在编码阶段和呈现页面阶段都需要的,也就是说,项目依赖即在开发环境中,又在生产环境中。

 "dependencies": {
    "@element-plus/icons-vue": "^2.1.0",
    "@vueuse/core": "^10.1.0",
    "@wangeditor/editor": "^5.1.23",
    "@wangeditor/editor-for-vue": "^5.1.12",
    "axios": "^1.4.0",
    "dayjs": "^1.11.7",
    "driver.js": "^0.9.8",
    "echarts": "^5.4.1",
    "echarts-liquidfill": "^3.1.0",
    "element-plus": "^2.3.4",
    "js-md5": "^0.7.3",
    "mitt": "^3.0.0",
    "nprogress": "^0.2.0",
    "pinia": "^2.0.35",
    "pinia-plugin-persistedstate": "^3.1.0",
    "print-js": "^1.6.0",
    "qs": "^6.11.1",
    "sortablejs": "^1.15.0",
    "vue": "^3.2.47",
    "vue-i18n": "^9.2.2",
    "vue-router": "^4.1.6",
    "vuedraggable": "^4.1.0"
  },
项目依赖项详解
依赖项列表
@element-plus/icons-vue
版本: ^2.1.0
作用: 提供 Element Plus UI 框架的图标库,用于在 Vue 3 项目中轻松使用各种图标。
@vueuse/core
版本: ^10.1.0
作用: 一个基于 Vue 3 的实用函数和组合式 API 的集合,提供了许多常用的功能,如状态管理、事件监听、动画控制等。
@wangeditor/editor 和 @wangeditor/editor-for-vue
版本: ^5.1.23^5.1.12
作用: WangEditor 是一款功能强大的富文本编辑器,这两个包分别提供了编辑器的核心功能和 Vue 3 的集成支持。
axios
版本: ^1.4.0
作用: 一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js 中发送 HTTP 请求。
dayjs
版本: ^1.11.7
作用: 一个轻量级的 JavaScript 日期处理库,提供了许多方便的方法来解析、验证、操作和显示日期和时间。
driver.js
版本: ^0.9.8
作用: 一个用于创建引导或教程的库,可以帮助用户更好地理解和使用你的应用。
echarts 和 echarts-liquidfill
版本: ^5.4.1^3.1.0
作用: ECharts 是一个使用 JavaScript 实现的开源可视化库,可以在浏览器中生成各种图表。echarts-liquidfill 是 ECharts 的一个插件,用于创建液态填充图。
element-plus
版本: ^2.3.4
作用: Element Plus 是 Element UI 的 Vue 3 版本,一个基于 Vue 3 的高质量 UI 组件库。
js-md5
版本: ^0.7.3
作用: 一个用于生成 MD5 哈希值的 JavaScript 库。
mitt
版本: ^3.0.0
作用: 一个轻量级的、与事件发射器 API 兼容的事件总线库,用于在 Vue 组件之间传递事件。
nprogress
版本: ^0.2.0
作用: 一个轻量级的进度条库,用于在浏览器顶部显示页面加载进度。
pinia 和 pinia-plugin-persistedstate
版本: ^2.0.35^3.1.0
作用: Pinia 是 Vue 3 的状态管理库,类似于 Vuex 但更加轻量级和灵活。pinia-plugin-persistedstate 是一个用于 Pinia 的插件,可以将状态持久化到 localStorage 或 sessionStorage。
print-js
版本: ^1.6.0
作用: 一个用于在客户端打印 HTML 内容的 JavaScript 库。
qs
版本: ^6.11.1
作用: 一个用于解析和格式化 URL 查询字符串的库,常用于处理 GETPOST 请求的参数。
sortablejs
版本: ^1.15.0
作用: 一个用于列表排序的 JavaScript 库,可以轻松实现拖放排序、搜索和过滤等功能。
vue
版本: ^3.2.47
作用: Vue.js 是一个构建用户界面的渐进式框架,用于构建复杂的单页面应用。这里使用的是 Vue 3 的版本。
vue-i18n
版本: ^9.2.2
作用: Vue.js 的国际化插件,用于实现多语言支持。
vue-router
版本: ^4.1.6
作用: Vue.js 的官方路由管理器,用于构建单页面应用的页面
  1. 开发环境依赖

项目依赖配置详解
在前端项目中,devDependencies 是指仅在开发环境中需要的依赖项。它们通常用于支持开发流程,如代码检查、构建、测试等,但不会在生产环境中被包含。以下是对 devDependencies 中各依赖项的详细解释。

"devDependencies": {
    "@commitlint/cli": "^17.4.4",
    "@commitlint/config-conventional": "^17.4.4",
    "@types/js-md5": "^0.7.0",
    "@types/nprogress": "^0.2.0",
    "@types/qs": "^6.9.7",
    "@types/sortablejs": "^1.15.1",
    "@typescript-eslint/eslint-plugin": "^5.55.0",
    "@typescript-eslint/parser": "^5.55.0",
    "@vitejs/plugin-vue": "^4.1.0",
    "@vitejs/plugin-vue-jsx": "^3.0.1",
    "autoprefixer": "^10.4.14",
    "cz-git": "^1.6.1",
    "czg": "^1.6.1",
    "eslint": "^8.36.0",
    "eslint-config-prettier": "^8.7.0",
    "eslint-plugin-prettier": "^4.2.1",
    "eslint-plugin-vue": "^9.9.0",
    "husky": "^8.0.3",
    "lint-staged": "^13.2.0",
    "postcss": "^8.4.21",
    "postcss-html": "^1.5.0",
    "prettier": "^2.8.4",
    "rollup-plugin-visualizer": "^5.9.0",
    "sass": "^1.62.0",
    "standard-version": "^9.5.0",
    "stylelint": "^15.6.0",
    "stylelint-config-html": "^1.1.0",
    "stylelint-config-recess-order": "^4.0.0",
    "stylelint-config-recommended-scss": "^9.0.1",
    "stylelint-config-recommended-vue": "^1.4.0",
    "stylelint-config-standard": "^30.0.1",
    "stylelint-config-standard-scss": "^7.0.1",
    "typescript": "^5.0.4",
    "unplugin-vue-setup-extend-plus": "^1.0.0",
    "vite": "^4.3.3",
    "vite-plugin-compression": "^0.5.1",
    "vite-plugin-eslint": "^1.8.1",
    "vite-plugin-html": "^3.2.0",
    "vite-plugin-svg-icons": "^2.0.1",
    "vue-tsc": "^1.2.0"
  }
开发依赖详解
@commitlint/cli 和 @commitlint/config-conventional
作用:用于检查 git commit 消息是否符合某种格式规范(这里是 Conventional Commits 格式)。
版本:^17.4.4,表示安装 17.4.4 及以上版本,但不包括 18.0.0
@types/js-md5, @types/nprogress, @types/qs, @types/sortablejs
作用:TypeScript 的类型定义文件,用于为相应的 JavaScript 库提供类型信息。
版本:各自指定了相应的版本范围。
@typescript-eslint/eslint-plugin 和 @typescript-eslint/parser
作用:在 TypeScript 项目中使用 ESLint 进行代码检查。
版本:^5.55.0,表示安装 5.55.0 及以上版本。
@vitejs/plugin-vue 和 @vitejs/plugin-vue-jsx
作用:为 Vite 提供 Vue 支持的插件,后者还提供了对 Vue JSX 的支持。
版本:^4.1.0^3.0.1,分别指定了版本范围。
autoprefixer
作用:为 CSS 添加浏览器前缀,确保样式在所有浏览器中都有良好的兼容性。
版本:^10.4.14
cz-git 和 czg
作用:用于实现自定义的 git commit 消息格式,通常与 commitlint 一起使用。
版本:^1.6.1
eslint, eslint-config-prettier, eslint-plugin-prettier, eslint-plugin-vue
作用:ESLint 用于代码检查,而相关插件用于与 Prettier 集成、检查 Vue 文件等。
版本:各自指定了相应的版本范围。
husky, lint-staged
作用:husky 用于在 git hooks 中运行脚本,而 lint-staged 用于在 git 暂存的文件上运行 linters。
版本:^8.0.3^13.2.0
postcss, postcss-html
作用:PostCSS 是一个用于转换 CSS 的工具,postcss-html 则用于处理 HTML 文件中的样式。
版本:^8.4.21^1.5.0
prettier
作用:代码格式化工具,确保团队中的代码风格一致。
版本:^2.8.4
rollup-plugin-visualizer
作用:Rollup 插件,用于生成项目依赖关系的可视化图表。
版本:^5.9.0
sass
作用:Sass 是一种 CSS 预处理器,提供了变量、嵌套、混合等功能。
版本:^1.62.0
standard-version
作用:自动处理版本控制和 CHANGELOG 的工具。
版本:^9.5.0
stylelint 和相关配置
作用:用于检查 CSS/SCSS/Less 等样式文件的工具,相关配置定义了检查的规则。
版本:各自指定了相应的版本范围。
typescript
作用:TypeScript 是 JavaScript 的一个超集,添加了静态类型、接口等特性。
版本:^5.0.4
unplugin-vue-setup-extend-plus, vite, vite 相关插件
作用:为 Vite 提供额外的功能支持,如代码压缩、ESLint 集成、处理 HTMLSVG 等。
版本:各自指定了相应的版本范围。
vue-tsc
作用:Vue 3 项目的 TypeScript 编译器,基于 TypeScript 和 Vue 的官方编译器插件。
版本:^1.2.0

总结:这些依赖项共同构成了一个完整的开发环境,涵盖了代码检查、格式化、构建、版本控制等多个方面,为前端项目的开发提供了强大的支持。
在这里插入图片描述
如碰到其他的问题 可以私下我 一起探讨学习
如果对你有所帮助还请 点赞 收藏谢谢~!
关注收藏博客 作者会持续更新…

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

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

相关文章

嵌入式调试接口

嵌入式系统的开发和调试是一项复杂的任务,需要强大的工具和接口来确保硬件和软件的正确性。在这个领域,JTAG(Joint Test Action Group)和SWD(Serial Wire Debug)是两个常用的调试接口标准,它们在…

使用 audit2allow 工具添加SELinux权限的方法

1. audit2allow工具的使用 audit2allow 命令的作用是分析日志,并提供允许的建议规则或拒绝的建议规则。 1.1 audit2allow的安装 sudo apt-get install policycoreutilssudo apt install policycoreutils-python-utils 1.2 auditallow的命令 命令含义用法-v--ve…

VSCode安装OpenImageDebugger

VSCode安装OpenImageDebugger 1. 官网2. 编译2.1 依赖项2.2 编译 OpenImageDebugger2.3 配置 GDB 和 LLDB 3. 验证安装是否成功 1. 官网 下载路径:OpenImageDebugger 2. 编译 2.1 依赖项 官网上描述, Qt 5.15.1Python 3.10.12 这两个其实配置并不需…

如何配置Redis + Rdis在IDEA中的使用

文章目录 Step1. 下载zipStep2. 修改环境变量Step3. 启动Redis服务端Step4. 启动Redis客户端Step5. IDEA中链接Redis Step1. 下载zip 下载 Redis-x64-xxx.zip压缩包,解压到 E 盘后,将文件夹重新命名为 redis 下载地址:Redis下载地址 Step2…

mongodb studio 3T 破解

官网下载后有30天的体验时间 一、破解原理是 30天后重置体验时间,所以每隔30天左右需要重新破解 1 新建studio.bat文件: echo offECHO 重置Studio 3T的使用日期......FOR /f "tokens1,2,* " %%i IN (reg query "HKEY_CURRENT_USER\Sof…

Java中特殊文件和日志技术

特殊文件和日志技术 特殊文件:Properties属性文件 特点: 特点一:都是键值对 特点二:键不能重复 特点三:文件后缀一般是Properties 作用: …

Python:基于TSFEL库对时间序列进行特征分析

1. TSFEL 时间序列作为主要TSFEL提取方法的输入传递,要么作为先前加载在内存中的数组传递,要么存储在数据集中的文件中。 由于TSFEL可以处理多维时间序列,因此随后应用了一套预处理方法,以确保信号质量足够和时间序列同步&#xf…

惊天大瓜姬圈天莱女明星出轨风波

#惊天大瓜!姬圈天菜女明星出轨风波#近日,娱乐圈掀起了一场前所未有的风暴!狗仔队放出重磅消息,直指某位姬圈天菜级别的女明星深陷出轨泥潭。消息一出,引发了网友们的热议和猜测,究竟这位神秘的女明星是谁&a…

VPS环境搭建及配置

VPS简介 VPS(Virtual Private Server)是一种虚拟化技术,可以将一台物理服务器分成多个虚拟服务器,每个虚拟服务器都有独立的操作系统和资源,相互之间互不影响。VPS可以提供类似于独立服务器的功能,但价格更…

Nuxt3 的生命周期和钩子函数(二)

title: Nuxt3 的生命周期和钩子函数(二) date: 2024/6/26 updated: 2024/6/26 author: cmdragon excerpt: 摘要:本文深入介绍了Nuxt.js框架中几个关键的生命周期钩子函数,包括app:redirected(SSR环境下重定向前触发…

关于Vite+Vue+Ts WebStorm路径别名的问题

一、准备一个项目 二、在 vite.config.js 中添加 resolve: {alias: {: /src}} 三、tsconfig.app.json中添加代码 //添加代码"baseUrl": ".","paths": {"/*": ["src/*"]}把src的一个文件修改路径为开头 四、安装插件 npm i …

从音频中提取MFCC特征的过程

在语音信号处理和语音识别领域,梅尔频率倒谱系数(MFCC)是最常用的特征之一。本文将逐步介绍如何从音频中提取MFCC特征,并在每个步骤中进行可视化展示。 步骤 1:加载音频文件并查看波形 首先,我们需要加载…

安装与配置:MySQL的环境搭建之旅(二)

目录 引言:从理论到实践的跨越 一、安装MySQL:跨平台的便捷指南 Windows环境 Linux环境 macOS环境 二、基本配置:端口设置与字符集选择 三、从零到一的蜕变 引言:从理论到实践的跨越 在前一章节《MySQL简介》中&#xff0c…

力扣随机一题 6/26 哈希表 数组 思维

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 题目一: 2869.收集元素的最少操作次数【简单】 题目&#xff…

Flutter实现页面间传参

带参跳转 步骤 在router中配置这个路由需要携带的参数,这里的参数是 arguments,注意要用花括号包裹参数名称 在相应组件中实现带参构造函数 在state类中可以直接使用${widget.arguments}来访问到传递的参数 在其他页面中使用Navigator.pushNamed()带参跳转

【课程总结】Day11(中):手势图像识别实战(Vgg16和ResNet)

前言 在上一章《【课程总结】Day11(上):手势图像识别实战(LeNet模型)》课程中,我们通过使用LeNet模型实现了手势识别。在本章内容中,我们将搭建Vgg模型和ResNet模型,并应用到手势识别中。 Vgg模型 Vgg简…

黑马点评06短信登录-用户请求和会话管理过程

用户请求发送: 用户的浏览器向服务器发送请求(例如,访问网页或提交表单)。请求头包含之前存储在浏览器中的Cookie,其中包括会话ID(Session ID)。 服务器接收请求: 服务器接收到用户的…

智慧城市:数据可视化如何提升城市管理

数据可视化在智慧城市中有何应用?随着城市化进程的加快和信息技术的飞速发展,智慧城市的建设成为全球各大城市追求的目标。而数据可视化技术作为智慧城市的重要组成部分,通过将复杂的数据转化为直观、易理解的图表和图形,极大地提…

c#关键字 ArgumentOutOfRangeException .? IEnumerable string.Join

c# ArgumentOutOfRangeException ArgumentOutOfRangeException 是 C# 中表示某个参数值超出了方法或属性定义的有效范围时引发的一个异常。这个异常通常在尝试访问数组、集合、字符串等的无效索引,或者当传递给方法或属性的参数不在其有效范围内时发生。 例如&…

Rill Data:实时数据分析的未来

欢迎来到 Rill Rill是从数据湖到仪表板的最快路径。 rilldata 与大多数 BI 工具不同,Rill 带有自己的嵌入式内存数据库。数据和计算位于同一位置,查询以毫秒为单位返回。 因此,您可以即时透视、切片和深入研究数据。 下载 Rill 开始建模数…