admin 管理员组文章数量: 1184232
文章目录
- 项目地址
- 安装环境 自行安装
- 命令行
- 目录结构
- 自动导入配置
- 安装环境 自行安装
- 命令行
- 目录结构
- 自动导入配置
- 配置 `eslint.config.mjs`
- 新增`prettier.config.mjs`
- 安装Element Plus
- ```main.ts```增加Element Plus 配置
- 自动导入
- UNOCSS
- 安装 `npm install -D unocss`
- 配置自动导入 修改 `vite.config.ts`
- 修改`main.ts`
- 新增`unocss.config.ts`
- vueuse
- 安装
- 配置自动导入 修改 `vite.config.ts`
项目地址
项目地址
安装环境 自行安装
命令行
npm create vue@latest
都选是,端到端随便选,也用不到
参考:
按照提示的命令执行就可以
npm install 时记得换源,要快一些,推荐使用nrm继续换源
目录结构
自动导入配置
安装环境 自行安装
命令行
npm create vue@latest
都选是,端到端随便选,也用不到
参考:
按照提示的命令执行就可以
npm install 时记得换源,要快一些,推荐使用nrm继续换源
目录结构
自动导入配置
npm install unplugin-auto-import unplugin-vue-components --save-dev
修改 vite.config.ts
import { fileURLToPath, URL } from 'node:url' // 从 node 的 url 模块中导入工具,用于处理文件路径
import { defineConfig } from 'vite' // 从 Vite 中导入配置函数,用于定义 Vite 配置
import vue from '@vitejs/plugin-vue' // 从 Vite 插件库导入 vue 插件,用于支持 Vue 3 的单文件组件(SFC)
import vueJsx from '@vitejs/plugin-vue-jsx' // 导入 Vue JSX 插件,支持 Vue 组件中的 JSX 语法
// 自动导入插件,用于自动导入库中的方法
import AutoImport from 'unplugin-auto-import/vite'
// 组件自动注册插件,用于自动扫描并注册 Vue 组件
import Components from 'unplugin-vue-components/vite'
// https://vite.dev/config/
// 使用 defineConfig 函数来定义和导出 Vite 的配置
export default defineConfig({
// 配置 Vite 插件
plugins: [
vue(), // 启用 vue 插件,支持 Vue 单文件组件的编译
vueJsx(), // 启用 vue-jsx 插件,支持 JSX 语法的编写
// 自动导入 UI 库或其他常用工具函数,页面中可以直接使用而无需显式导入
AutoImport({
resolvers: [], // 可以配置特定库的解析器,自动导入库中的方法,目前为空
imports: ['vue', 'vue-router'], // 自动导入 vue 和 vue-router 的函数,例如 `ref`, `reactive` 等
dts: 'types/auto-imports.d.ts', // 自动生成的类型声明文件路径,用于给 TypeScript 提供提示
dirs: [''], // 该选项可以指定自动导入自定义的工具函数的目录,目前未配置
vueTemplate: true, // 启用该选项后,在 Vue 模板中也可以使用自动导入的函数
}),
// 自动注册 Vue 组件,允许在页面中直接使用组件,而无需手动导入
Components({
dirs: ['src/components/'], // 指定扫描组件的目录,默认会递归扫描该目录下的所有 Vue 组件
dts: 'types/components.d.ts', // 自动生成的组件类型声明文件路径,用于 TypeScript 提供提示
include: [/\.vue$/, /\.vue\?vue/, /\.md$/], // 匹配需要自动注册的文件类型,包括 .vue 文件和 markdown 文件
resolvers: [], // 可以配置组件库的解析器,用于支持自动导入第三方组件库,目前为空
}),
],
// 配置模块解析相关选项
resolve: {
alias: {
// 配置路径别名,`@` 代表项目根目录的 src 文件夹,方便在项目中使用绝对路径
'@': fileURLToPath(new URL('./src', import.meta.url)),
},
},
})
配置 eslint.config.mjs
修改内容
import pluginVue from 'eslint-plugin-vue' // 引入 ESLint 的 Vue 插件,提供 Vue 文件的 linting 规则
import vueTsEslintConfig from '@vue/eslint-config-typescript' // 引入 Vue 与 TypeScript 的 ESLint 配置,支持 Vue 项目中的 TypeScript
import pluginVitest from '@vitest/eslint-plugin' // 引入 Vitest 插件,用于 Vitest 测试的 linting
import pluginPlaywright from 'eslint-plugin-playwright' // 引入 Playwright 插件,用于 E2E 测试的 linting
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting' // 引入 Prettier 跳过格式化的配置
import parser from 'vue-eslint-parser' // 引入 Vue 的 ESLint 解析器,用于解析 Vue 文件中的代码
export default [
// 配置需要进行 Lint 检查的文件
{
name: 'app/files-to-lint',
files: ['**/*.{ts,mts,tsx,vue}'], // 需要 lint 的文件类型,包括 TypeScript、TSX 和 Vue 文件
},
// 配置需要忽略的文件或目录
{
name: 'app/files-to-ignore',
ignores: [
'**/dist/**', // 忽略构建输出目录
'**/dist-ssr/**', // 忽略服务器端渲染的构建输出目录
'**/coverage/**', // 忽略测试覆盖率目录
'.DS_Store', // 忽略 Mac 系统的 .DS_Store 文件
'node_modules', // 忽略 node_modules 目录
'dist', // 忽略 dist 目录
'dist-ssr', // 忽略 dist-ssr 目录
'*.local', // 忽略本地配置文件
'.vscode', // 忽略 VSCode 配置目录
'.idea', // 忽略 WebStorm 等 IDE 的配置目录
'*.md', // 忽略 Markdown 文件
'*.sh', // 忽略 Shell 脚本文件
],
},
// 使用 Vue 插件的基础配置,提供 Vue 项目的必要 lint 规则
...pluginVue.configs['flat/essential'],
// 使用 Vue 的 TypeScript 配置,集成 Vue 和 TypeScript 的 lint 规则
...vueTsEslintConfig(),
// Vitest 推荐的 ESLint 配置,用于测试文件的 linting
{
...pluginVitest.configs.recommended,
files: ['src/**/__tests__/*'], // 只对测试文件应用此规则
},
// Playwright 推荐的 ESLint 配置,用于 E2E 测试文件的 linting
{
...pluginPlaywright.configs['flat/recommended'],
files: ['e2e/**/*.{test,spec}.{js,ts,jsx,tsx}'], // 只对 E2E 测试文件应用此规则
},
// 通用的 ESLint 配置,适用于所有的 JS、TS 和 Vue 文件
{
files: ['**/*.{js,ts,vue}'], // 适用于 JS、TS、Vue 文件
languageOptions: {
parser: parser, // 使用 vue-eslint-parser 来解析 Vue 文件中的代码
ecmaVersion: 2021, // 使用 ECMAScript 2021 版本的语法
sourceType: 'module', // 使用 ES 模块的语法
parserOptions: {
parser: '@typescript-eslint/parser', // 对 TypeScript 代码使用 @typescript-eslint/parser 解析器
ecmaFeatures: {
jsx: true, // 支持 JSX 语法
},
},
globals: {
browser: true, // 全局启用浏览器相关的变量
node: true, // 全局启用 Node.js 相关的变量
es6: true, // 全局启用 ES6 相关的变量
},
},
rules: {
// TypeScript 相关的 lint 规则
'@typescript-eslint/no-unused-expressions': 'off', // 关闭未使用的表达式检查
'@typescript-eslint/no-explicit-any': 'off', // 允许使用 `any` 类型
'no-debugger': 'off', // 允许使用 `debugger` 语句进行调试
'@typescript-eslint/explicit-module-boundary-types': 'off', // 关闭强制显式声明模块边界类型的规则
'@typescript-eslint/ban-types': 'off', // 允许使用一些不推荐的 TypeScript 类型
'@typescript-eslint/ban-ts-comment': 'off', // 允许使用 TypeScript 注释
'@typescript-eslint/no-empty-function': 'off', // 允许定义空函数
'@typescript-eslint/no-non-null-assertion': 'off', // 允许使用非空断言(`!`)
'@typescript-eslint/no-unused-vars': [
'error',
{
argsIgnorePattern: '^_', // 忽略以 `_` 开头的函数参数未使用警告
varsIgnorePattern: '^_', // 忽略以 `_` 开头的变量未使用警告
},
],
'no-unused-vars': [
'error',
{
argsIgnorePattern: '^_', // 忽略以 `_` 开头的未使用变量
varsIgnorePattern: '^_',
},
],
// Vue 相关的 lint 规则
'vue/no-v-html': 'off', // 允许使用 `v-html` 指令
'vue/require-default-prop': 'off', // 不强制为每个 prop 提供默认值
'vue/require-explicit-emits': 'off', // 不强制显式声明组件的 `emits` 事件
'vue/multi-word-component-names': 'off', // 允许组件名为单个单词
'vue/html-self-closing': [
'error',
{
html: {
void: 'always', // 强制 HTML 空元素使用自闭合写法
normal: 'always', // 强制常规 HTML 标签自闭合
component: 'always', // 强制组件自闭合
},
svg: 'always', // 强制 SVG 标签自闭合
math: 'always', // 强制 MathML 标签自闭合
},
],
// Prettier 相关的 lint 规则
'prettier/prettier': [
'error',
{
endOfLine: 'auto', // 自动识别并使用系统的换行符
},
],
},
},
// 跳过 Prettier 格式化规则,与 Prettier 结合使用时跳过格式化检查
skipFormatting,
]
新增prettier.config.mjs
内容:
/**
* 修改配置后重启编辑器
* 配置项文档:https://prettier.io/docs/en/configuration.html
* @type {import("prettier").Config}
*/
export default {
/** 每一行的宽度 */
printWidth: 120,
/** 在对象中的括号之间是否用空格来间隔 */
bracketSpacing: true,
/** 箭头函数的参数无论有几个,都要括号包裹 */
arrowParens: 'always',
/** 换行符的使用 */
endOfLine: 'auto',
/** 是否采用单引号 */
singleQuote: false,
/** 对象或者数组的最后一个元素后面不要加逗号 */
trailingComma: 'none',
/** 是否加分号 */
semi: false,
}
安装Element Plus
Element Plus 官网
安装
npm install element-plus --save
main.ts增加Element Plus 配置
内容
import './assets/main.css' // 引入全局样式文件,应用全局样式
import { createApp } from 'vue' // 从 Vue 中引入 createApp 函数,用于创建 Vue 应用实例
import { createPinia } from 'pinia' // 引入 Pinia,Pinia 是 Vue 3 的状态管理库
import ElementPlus from 'element-plus' // 引入 Element Plus 组件库
import 'element-plus/dist/index.css' // 引入 Element Plus 的全局样式文件
import App from './App.vue' // 引入根组件 App.vue,作为应用的根组件
import router from './router' // 引入 Vue Router 配置文件,管理应用的路由
// 创建 Vue 应用实例,将根组件 App 作为入口
const app = createApp(App)
// 使用 Element Plus 组件库
app.use(ElementPlus)
// 使用 Pinia 状态管理库
app.use(createPinia())
// 使用 Vue Router 进行路由管理
app.use(router)
// 将 Vue 应用挂载到 HTML 文件中的 id 为 `#app` 的 DOM 元素上
app.mount('#app')
自动导入
修改 vite.config.ts
完整内容
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
// 自动配置
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
// Element Plus
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' // 增加
// https://vite.dev/config/
export default defineConfig({
plugins: [
vue(),
vueJsx(),
// 自动导入 UI 库,页面直接使用
AutoImport({
resolvers: [ElementPlusResolver()],
imports: ['vue', 'vue-router'], // 导入vue和vue-router
dts: 'types/auto-imports.d.ts', // 生成自动导入类型声明文件
dirs: [''], // 自动导入的方法等
vueTemplate: true,
}),
// 自动注册组件,页面直接使用
Components({
dirs: ['src/components/'], // 扫描的文件夹
dts: 'types/components.d.ts', // 生成自动注册类型声明文件
include: [/\.vue$/, /\.vue\?vue/, /\.md$/], // 匹配文件
resolvers: [ElementPlusResolver()], // 配置组件库的解析器
}),
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),
},
},
})
UNOCSS
安装 npm install -D unocss
配置自动导入 修改 vite.config.ts
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
// 自动配置
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
// Element Plus
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// UnoCSS
import UnoCSS from 'unocss/vite'
// https://vite.dev/config/
export default defineConfig({
plugins: [
vue(),
vueJsx(),
// UnoCSS
UnoCSS(),
// 自动导入 UI 库,页面直接使用
AutoImport({
resolvers: [ElementPlusResolver()],
imports: ['vue', 'vue-router'], // 导入vue和vue-router
dts: 'types/auto-imports.d.ts', // 生成自动导入类型声明文件
dirs: [''], // 自动导入的方法等
vueTemplate: true,
}),
// 自动注册组件,页面直接使用
Components({
dirs: ['src/components/'], // 扫描的文件夹
dts: 'types/components.d.ts', // 生成自动注册类型声明文件
include: [/\.vue$/, /\.vue\?vue/, /\.md$/], // 匹配文件
resolvers: [ElementPlusResolver()], // 配置组件库的解析器
}),
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),
},
},
})
修改main.ts
完整内容
import './assets/main.css' // 引入全局样式文件,应用全局样式
import { createApp } from 'vue' // 从 Vue 中引入 createApp 函数,用于创建 Vue 应用实例
import { createPinia } from 'pinia' // 引入 Pinia,Pinia 是 Vue 3 的状态管理库
import ElementPlus from 'element-plus' // 引入 Element Plus 组件库
import 'element-plus/dist/index.css' // 引入 Element Plus 的全局样式文件
import App from './App.vue' // 引入根组件 App.vue,作为应用的根组件
import router from './router' // 引入 Vue Router 配置文件,管理应用的路由
import 'uno.css' // 引入 UnoCSS,一个 CSS 框架,用于快速开发 Vue 应用
// 创建 Vue 应用实例,将根组件 App 作为入口
const app = createApp(App)
// 使用 Element Plus 组件库
app.use(ElementPlus)
// 使用 Pinia 状态管理库
app.use(createPinia())
// 使用 Vue Router 进行路由管理
app.use(router)
// 将 Vue 应用挂载到 HTML 文件中的 id 为 `#app` 的 DOM 元素上
app.mount('#app')
新增unocss.config.ts
内容
import { defineConfig, presetAttributify, presetUno } from "unocss"
/**
* 使用 `defineConfig` 定义 Unocss 的配置,主要配置预设、规则和快捷方式等。
*/
export default defineConfig({
/**
* 预设(presets)
* 预设是 Unocss 提供的一系列预定义的样式规则和功能,你可以通过引入不同的预设来增强或修改框架的行为。
*/
presets: [
/**
* presetAttributify:属性化模式
* 允许在 HTML 元素的属性中直接书写样式,不需要通过类名定义样式,例如 `<div text="red"></div>`。
* 这是一种简洁的书写方式,非常适合快速原型开发。
*/
presetAttributify(),
/**
* presetUno:默认预设
* UnoCSS 的核心预设,包含常见的实用工具类,比如 `flex`、`padding`、`margin` 等。
* 这是最基础的预设,几乎所有项目都会引入它。
*/
presetUno()
],
/**
* 自定义规则(rules)
* 规则是你可以自定义的 CSS 样式规则,每条规则是一个数组,包含一个类名和对应的样式定义。
*/
rules: [
/**
* 定义自定义类名 `uno-padding-20`,对应的样式为 `padding: 20px`
* 使用方法:在元素上添加 `uno-padding-20` 类名
* 例如:<div class="uno-padding-20"></div>
*/
["uno-padding-20", { padding: "20px" }]
],
/**
* 自定义快捷方式(shortcuts)
* 快捷方式允许你将多个实用工具类组合为一个类名,从而简化代码的书写。
*/
shortcuts: {
/**
* 定义 `uno-wh-full`,表示 `w-full h-full`,即宽高都为 100%。
* 使用方法:在元素上添加 `uno-wh-full` 类名
* 例如:<div class="uno-wh-full"></div>
*/
"uno-wh-full": "w-full h-full",
/**
* 定义 `uno-flex-center`,表示 `flex justify-center items-center`,即使用 `flexbox` 布局,且子元素水平居中和垂直居中。
* 使用方法:在元素上添加 `uno-flex-center` 类名
* 例如:<div class="uno-flex-center"></div>
*/
"uno-flex-center": "flex justify-center items-center",
/**
* 定义 `uno-flex-x-center`,表示 `flex justify-center`,即使用 `flexbox` 布局,且子元素水平居中。
* 使用方法:在元素上添加 `uno-flex-x-center` 类名
* 例如:<div class="uno-flex-x-center"></div>
*/
"uno-flex-x-center": "flex justify-center",
/**
* 定义 `uno-flex-y-center`,表示 `flex items-center`,即使用 `flexbox` 布局,且子元素垂直居中。
* 使用方法:在元素上添加 `uno-flex-y-center` 类名
* 例如:<div class="uno-flex-y-center"></div>
*/
"uno-flex-y-center": "flex items-center"
}
})
vueuse
官网
安装
npm i @vueuse/core
配置自动导入 修改 vite.config.ts
完整内容
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
// 自动配置
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
// Element Plus
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// UnoCSS
import UnoCSS from 'unocss/vite'
// VueUse
import {
VueUseComponentsResolver,
VueUseDirectiveResolver,
} from 'unplugin-vue-components/resolvers'
// https://vite.dev/config/
export default defineConfig({
plugins: [
vue(),
vueJsx(),
// UnoCSS
UnoCSS(),
// 自动导入 UI 库,页面直接使用
AutoImport({
resolvers: [ElementPlusResolver()],
imports: ['vue', 'vue-router'], // 导入vue和vue-router
dts: 'types/auto-imports.d.ts', // 生成自动导入类型声明文件
dirs: [''], // 自动导入的方法等
vueTemplate: true,
}),
// 自动注册组件,页面直接使用
Components({
dirs: ['src/components/'], // 扫描的文件夹
dts: 'types/components.d.ts', // 生成自动注册类型声明文件
include: [/\.vue$/, /\.vue\?vue/, /\.md$/], // 匹配文件
resolvers: [
ElementPlusResolver(), // 自动导入 Element Plus
VueUseComponentsResolver(), // 自动导入 VueUse
VueUseDirectiveResolver(), // 自动导入 VueUse 的指令
], // 配置组件库的解析器
}),
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),
},
},
})
本文标签: 项目 comprehensivetools
版权声明:本文标题:comprehensive_tools之创建、配置项目 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1754371758a2995058.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论