Vue3 + Vite 工程化项目环境配置指南

1. 搭建一个Vue3+Vite项目

Vite 官网教程

pnpm create vite

建议使用 pnpm 作为包管理工具来创建并管理项目


2. 安装 ESLint

ESLint 是一个可插拔的、可配置的 JavaScript/TypeScript 静态分析工具。它的主要作用和基本配置如下:

ESLint 的作用

  1. 代码质量检查:检测语法错误、潜在问题和不良编码习惯
  2. 代码风格统一:确保团队成员遵循一致的代码风格规范
  3. 错误预防:在运行前发现潜在的逻辑错误和安全隐患
  4. 自动修复:可以自动修复部分代码问题和格式化问题
  5. 可扩展性:支持自定义规则和插件扩展

2.1. ESLint 基本配置

  • eslint.config.{m|c}?js - ESLint 配置文件方式格式

2.2. 基本配置项示例

// eslint.config.js 

import js from '@eslint/js' // 推荐校验js规范
import prettierRecommended from 'eslint-plugin-prettier/recommended' // 推荐校验prettier
import pluginVue from 'eslint-plugin-vue' // 推荐校验vue规范
import { defineConfig } from 'eslint/config'
import globals from 'globals' // 全局变量
import tseslint from 'typescript-eslint' // 推荐校验ts规范

export default defineConfig([
  {
    files: ['src/**/*.{js,mjs,cjs,ts,mts,cts,vue,jsx,tsx}'], // 校验src下的各种文件类型
    plugins: { js }, // 引入js规则
    extends: ['js/recommended'], // 继承js规则
    languageOptions: {
      // 指定环境
      globals: {
        ...globals.browser,
        ...globals.node
      }
    }
  },
  tseslint.configs.recommended, // 继承ts规则
  pluginVue.configs['flat/essential'], // 继承vue规则
  {
    files: ['**/*.vue'], // 校验vue文件
    languageOptions: {
      parserOptions: {
        parser: tseslint.parser
      }
    }
  },
  {
    ignores: ['dist/**', 'node_modules/**'] // 忽略文件
  },
  {
    rules: {
      'no-console': 'off', // 禁止使用console
      'no-debugger': 'warn' // 禁止使用debugger
    }
  },
  prettierRecommended // 会覆盖eslint的规则
])

2.3. 安装 ESLint VSCode 插件


3. 安装 Prettier

pnpm add prettier eslint-plugin-prettier eslint-config-prettier -D

3.1. Prettier 的作用

Prettier 是一个代码格式化工具,专注于代码样式统一,它的主要作用如下:

  1. 统一代码风格:自动格式化代码,确保团队代码风格一致性
  2. 减少代码争议:消除关于代码格式的争论和讨论
  3. 支持多种语言:支持 JavaScript、TypeScript、Vue、CSS、HTML、JSON 等多种格式
  4. 与 ESLint 协同工作:可以与 ESLint 配合使用,各自专注不同层面的代码质量
  5. 自动格式化:保存文件时自动格式化或在提交前统一格式化

3.2. Prettier 基本配置

// prettier.config.js
export default {
  semi: false, // 末尾添加分号
  singleQuote: true, // 单引号
  tabWidth: 2, // 缩进两个空格
  trailingComma: 'none', // 尾随逗号
  printWidth: 100, // 每行代码长度
  useTab: false, // 使用tab缩进
  endOfLine: 'auto', // 换行符
  bracketSpacing: true // 对象字面量的大括号间是否加空格
}

3.3. 安装 Prettier VSCode 插件

3.4. Prettier 与 ESLint 集成

在项目中通常会安装eslint-config-prettier来解决 ESLint 和 Prettier 的冲突:

npm add -D eslint-config-prettier
//eslint.config.js
import prettierRecommended from 'eslint-plugin-prettier/recommended'
{
	// ...
 prettierRecommended // 放在最后,会覆盖eslint的规则
}

3.5. 添加 Prettier 忽略文件

/node_modules/**
/public/*
/docs/*
/src/types/env.d.ts
/docs/**/*
/plop/**/*
CHANGELOG

4. 安装 EditorConfig

EditorConfig 是一个用于维护一致的代码格式和编辑器设置的工具,它的主要作用和配置如下:

4.1 EditorConfig 的作用

  1. 统一编辑器配置:在不同编辑器和 IDE 之间保持一致的代码格式设置
  2. 团队协作标准化:确保团队成员使用相同的缩进、字符编码、换行符等设置
  3. 跨平台兼容性:解决不同操作系统间的编码和换行符差异
  4. 自动化配置:无需手动设置每个编辑器的代码格式选项

4.2. EditorConfig 配置

EditorConfig 使用 .editorconfig 文件进行配置,采用 INI 格式:

root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = crlf

4.3. 主要配置项说明

  • root = true:标识这是 EditorConfig 配置的根目录,搜索时不会继续向上查找
  • [*]:通配符,匹配所有文件
  • charset = utf-8:设置文件编码为 UTF-8
  • indent_style = space:使用空格进行缩进(可选 spacetab
  • indent_size = 2:缩进大小为 2 个空格
  • end_of_line = crlf:设置换行符类型(crlf for Windows, lf for Unix/Linux/Mac)

4.4. 更精细的配置示例

root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[*.{js,ts,vue}]
indent_style = space
indent_size = 2

[*.md]
trim_trailing_whitespace = false

4.5. 支持的编辑器

EditorConfig 支持大多数主流编辑器,包括 VS Code、WebStorm、Sublime Text、Atom 等,通常需要安装相应的插件来支持。

5. 安装 lint-staged 和 husky

pnpm add husky lint-staged -D

5.1. lint-stage

5.1.1 lint-staged 的作用

lint-staged 是一个用于对 Git 暂存区(staged files)中的文件运行 linters 的工具。它的主要作用包括:

  1. 只检查修改的文件:只对 Git 中已暂存(staged)的文件运行 linting,而不是整个项目,提高效率

  2. Git 钩子集成:通常与 [husky] 配合使用,在 Git 提交前自动检查代码质量

  3. 自动化代码格式化:可以在提交前自动修复代码格式问题,确保提交的代码符合规范

  4. 提高代码质量:防止不符合规范的代码被提交到代码库中

5.1.2 lint-staged 配置
//  `package.json`
{
   "lint-staged": {
    "src/**/*.{js,cjs,jsx,ts,tsx,vue}": [
      "eslint --fix"
    ],
    "src/**/*.{html,json,css scss,md}": [
      "npx prettier --write"
    ]
  }
}

这样在每次 Git 提交时,只会对本次修改的文件进行 linting 和格式化检查,既保证了代码质量,又不会影响到未修改的文件。

5.2. husky

5.2.1 husky 的作用

husky 是一个 Git 钩子工具,用于在 Git 流程的不同阶段执行脚本,它的主要作用如下:

  1. Git 钩子管理:简化 Git 钩子的配置和管理过程
  2. 自动化代码检查:在提交或推送代码前自动运行代码质量检查
  3. 流程规范化:确保团队成员在提交代码前遵循统一的质量标准
  4. 防止劣质代码提交:阻止不符合规范的代码进入代码仓库
  5. 与 lint-staged 集成:配合 lint-staged 实现增量代码检查
5.2.2 生成 .husky 目录
# 若没有安装则先安装 husky 
pnpm add -D husky
# 初始化 husky 生成 .husky 目录
npx husky init
5.2.3. 配置 Git 钩子

husky 支持多种 Git 钩子,常用的包括:

  • pre-commit 钩子: 在代码提交前执行检查
  • .husky 目录下创建 pre-commit 文件,并添加以下内容:
# 创建 pre-commit 钩子
npx lint-staged
  • commit-msg钩子:检查提交信息格式

  • 安装commitlint

pnpm add @commitlint/cli @commitlint/config-conventional -D
  • 添加 git hook: 在 .husky 目录下创建 commit-msg 文件,并添加以下内容:
# 创建 commit-msg 钩子
npx commitlint --edit $1
  • 在根目录下创建 commitlint.config.cjs 文件,并添加以下内容:
// commitlint.config.cjs
module.exports = {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'type-enum': [
      2,
      'always',
      [
        'feat', // 新功能(feature)
        'fix', // 修补bug
        'docs', // 文档(documentation)
        'style', // 格式、样式(不影响代码运行的变动)
        'refactor', // 重构(即不是新增功能,也不是修改BUG的代码)
        'perf', // 优化相关,比如提升性能、体验
        'test', // 添加测试
        'ci', // 持续集成修改
        'chore', // 构建过程或辅助工具的变动
        'revert', // 回滚到上一个版本
        'workflow', // 工作流改进
        'mod', // 不确定分类的修改
        'wip', // 开发中
        'types', // 类型修改
        'release' // 版本发布
      ]
    ],
    'subject-full-stop': [0, 'never'],
    'subject-case': [0, 'never']
  }
}

5.2.4. 当前的 package.json
{
  "scripts": {
    "prepare": "husky install"
  },
  "lint-staged": {
  "src/**/*.{js,cjs,jsx,ts,tsx,vue}": [
    "npm run eslint --fix"
  ],
  "src/**/*.{html,json,css scss,md}": [
    "npx prettier --write"
  ]
}
// ...
}
5.3. 工作流程
  1. 用户执行 git commit
  2. 触发 pre-commit 钩子
  3. husky 运行配置的命令(如 lint-staged)
  4. lint-staged 对暂存区文件运行 linters
  5. 如果检查通过,允许提交;否则阻止提交

这种方式确保只有符合代码规范的更改才能被提交到版本控制系统中。

6. 添加 .gitignore 文件

node_modules
.DS_Store
.mp4
dist-ssr
*.local 
pnpm-debug
stats.html
.idea

7. 总结

本文档系统地介绍了从创建 Vue3 + Vite 项目到搭建完整前端工程化基建的流程,覆盖了 项目初始代码规范(ESLint)格式化(Prettier)编辑器统一(EditorConfig)Git 钩子(Husky)增量检查(lint-staged) 等关键环节,希望能对你有所帮助。

### 如何设置一个基于 Vue 3Vite 和 TypeScript 的项目 要创建并配置一个基于 Vue 3Vite 和 TypeScript 的现代前端开发环境,可以按照以下方法操作: #### 创建项目 通过 `pnpm` 工具来初始化一个新的 Vite 项目。以下是具体命令: ```bash pnpm create vite vue3-element-template --template vue-ts ``` 这条命令会使用官方模板快速搭建一个支持 Vue 3 和 TypeScript 的基础框架[^1]。 #### 安装依赖 进入刚刚创建的项目目录后,运行以下命令安装必要的依赖项: ```bash pnpm install ``` 这一步骤将自动解析并下载所需的库文件以及工具链,包括但不限于 Vue 3 核心包、TypeScript 编译器及相关插件。 #### 启动本地服务器 为了验证项目的正常工作状态,在完成上述步骤之后可以通过下面这个指令启动内置的服务端口用于调试目的: ```bash cd my-vue-app && pnpm run dev ``` 此命令会在默认浏览器窗口打开应用实例以便实时预览效果变化情况。 #### 构建生产版本 当准备部署应用程序到线上环境之前,则需执行构建流程以优化资源加载效率和减少体积大小: ```bash pnpm run build ``` 该过程通常涉及代码压缩、Tree Shaking(移除未使用的模块)、静态资产处理等功能实现最终产物打包输出至指定路径下供后续分发使用。 #### 配置 tsconfig.json 文件 对于任何采用 TypeScript 技术栈的新工程而言,合理调整其编译选项至关重要。一般情况下,默认生成的基础配置已经能够满足大部分需求;然而如果存在特殊场景或者高级特性启用的需求时,则可能需要手动编辑位于根目录下的 `tsconfig.json` 文件内容如下所示作为参考样本之一: ```json { "compilerOptions": { "target": "ESNext", "module": "ESNext", "strict": true, "jsx": "preserve", "importHelpers": true, "moduleResolution": "node", "skipLibCheck": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, "sourceMap": true, "baseUrl": ".", "types": ["vite/client", "@types/node"], "paths": { "@/*": ["src/*"] } }, "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], "exclude": ["node_modules", "dist"] } ``` 以上片段定义了一些重要的参数比如目标 JavaScript 版本(`esnext`)、模块化方案选择(`esnext`)以及其他增强型功能开关等等。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值