企业级vue3项目快速搭建,这一套能行!

287 阅读4分钟

项目主体内容

vue3 + vite + pnpm + ESLint + Prettier + Husky + commitlint

创建项目

1. 创建项目命令

pnpm create vite

注意:node.js 版本 >= 12.0.0

2. 项目名称

image.png

3. 选择前端框架

image.png

4. 项目类型

我不喜欢ts,你们自己选

image.png

5. ok

image.png

安装 ESLint、Prettier

这部分是统一大家代码开发习惯,避免多人协作把代码搞得乱糟糟

1. 安装 eslint

pnpm i eslint -D

2. 初始化 eslint

npx eslint --init

我选择的配置如下,仅供参考

image.png

以上内容配置完成后,项目会生成一个文件 .eslintrc.cjs 就是eslint在本项目的配置文件

3. 安装 prettier

这是美化项目代码格式的一个插件,配合eslint,绝对好用 按照以下指令安装项目所需要的插件

pnpm install -D prettier
pnpm install -D eslint-config-prettier #eslint兼容的插件
pnpm install -D eslint-plugin-prettier #eslint的prettier

4. 配置 prettier 文件

我们需要在项目根目录手动创建一个文件 .prettierrc.js,将下面配置放到里面 如果有些文件我们不需要格式化,就创建一个 .prettierignore 文件,这是能忽略某些文件,将文件或者文件夹的名字放入其中即可

以下是我团队项目中常使用的配置

// .prettierrc.js
module.exports = {
  bracketSameLine: true,
  printWidth: 150, // 单行输出(不折行)的(最大)长度
  tabWidth: 2, // 每个缩进级别的空格数
  tabs: false, // 使用制表符 (tab) 缩进行而不是空格 (space)
  semi: false, // 是否在语句末尾打印分号
  singleQuote: true, // 是否使用单引号
  quoteProps: 'as-needed', // 仅在需要时在对象属性周围添加引号
  bracketSpacing: true, // 是否在对象属性添加空格
  htmlWhitespaceSensitivity: 'ignore', // 指定 HTML 文件的全局空白区域敏感度, "ignore" - 空格被认为是不敏感的
  trailingComma: 'none', // 去除对象最末尾元素跟随的逗号
  useTabs: false, // 不使用缩进符,而使用空格
  jsxSingleQuote: false, // jsx 不使用单引号,而使用双引号
  arrowParens: 'always', // 箭头函数,只有一个参数的时候,也需要括号
  rangeStart: 0, // 每个文件格式化的范围是文件的全部内容
  endOfLine: 'auto', // 换行符使用 lf
  'max-lines-per-function': [2, { max: 320, skipComments: true, skipBlankLines: true }], // 每个函数最大行数

  ignorePath: '.gnore',
  'files.insertFinalNewline': true,
  'javascript.format.insertSpaceBeforeFunctionParenthesis': true,
  eslintIntegration: true,
  stylelintIntegration: true
}

5. 在 ESLint 校验中加入 prettier校验

更改 Eslint 的配置文件 .eslintrc.cjs, 在里面加入 Prettier 相关配置


module.exports = {
  "extends": [
    "plugin:prettier/recommended"
  ],
  "plugins": [
    "prettier"
  ]
}

Husky + lint-staged

这部分是对提交代码时候的拦截校验,确保提交的代码符合要求,毕竟为了统一规范,commit我有个格式你需要提交上来,不然找起来费劲

1. 安装 husky

可以触发一些狗子函数,我们要做的是希望在 commit 代码之前,先检查一遍代码是否规范,如果检查不通过,不能执行提交代码操作

pnpm i husky -D

制定git hooks

npx husky install

执行完以上代码,目录中会出现一个 .husky 文件夹

package.json 中添加执行 scrpts 指令

"prepare": "husky install"

设置了脚本之后,在项目初期运行 pnpm i 指令执行安装操作的时候,会自动执行该脚本

2. 创建 precommit hook

执行以下代码,在 .husky 文件中,新增一个文件,并且这个文件携带了指令 npm run lint,也就是提交代码之前会执行这个指令,

npx husky add .husky/pre-commit "npm run lint"

因为上面我们配置了 ESLintprettier ,所以在 package.jsonscripts 中加入以下代码

"lint": "eslint src/**/*.{js,vue} --fix",

image.png

注意:这时候提交的代码,会全部都执行 lint 检测一遍,每次都这样会导致提交代码很慢,所以 lint-staged 出现,它的做法是每次都只检查 git 暂存区里的文件,这也提交代码的时候的lint执行检查的量比较小,节省很多时间

3. 安装 lint-stadge

如果每一次提交都对所有的代码都执行代码规范的命令,那么效率很低,这个插件可以仅仅处理暂存区的文件

  1. 执行以下代码安装
pnpm i lint-staged -D
  1. 修改 package.json 配置
"lint-staged": {
    "src/**/*.{vue,js,jsx,ts,tsx,json}": [
      "pnpm lint"
    ]
  },

image.png

  1. 修改 .husky 中 pre-commit 文件

image.png

4. 安装 commitlint

提交代码检查,commit 的信息是否符合规范,最佳 git 实践中,有很多必要的规则遵守,这也我们可以

pnpm install -g @commitlint/cli @commitlint/config-conventional

在 .husky 文件夹下新建 commit-msg 文件,填入如下内容

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx --no -- commitlint --edit $1

image.png

项目根目录中新建 commitlint.config.cjs 文件,写入配置

module.exports = {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'type-enum': [1, 'always', ['feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'chore', 'revert', 'build']],
    'type-case': [0],
    'type-empty': [0],
    'scope-empty': [0],
    'scope-case': [0],
    'subject-full-stop': [0, 'never'],
    'subject-case': [0, 'never'],
    'header-max-length': [0, 'always', 72]
  }
}

至此基础设施搭建完成,可以盖楼了吧,如果不能盖,你评论区告诉我,我再加钢筋!