首页 > 其他分享 >10分钟带你搭建企业级项目工程化模版

10分钟带你搭建企业级项目工程化模版

时间:2024-03-23 19:32:42浏览次数:25  
标签:10 vue false -- 企业级 prettier 工程化 true eslint

一个集成了Vite+Vue3+Ts+Eslint+Perttier+Husky+Lintstaged+commitlint+commitizen的模版

使用vite脚手架搭建vue基本架构

Vite

pnpm create vite

//✔ Project name: … test
//✔ Select a framework: › Vue
//✔ Select a variant: › TypeScript

每当我们编码完成时,我们往往希望使用一些相关工具来进行优化对代码进行代码质量和格式检查,其中ESLint最为经典

ESLint

pnpm i eslint

pnpm eslint --init
//You can also run this command directly using 'npm init @eslint/config'.
//✔ How would you like to use ESLint? · problems
//✔ What type of modules does your project use? · esm
//✔ Which framework does your project use? · vue
//✔ Does your project use TypeScript? · No / Yes
//✔ Where does your code run? · browser, node
//✔ What format do you want your config file to be in? · JSON
//The config that you've selected requires the following dependencies:
//因为eslint默认只支持JS 我们需要ESLint安装插件来支持Ts和Vue
//@typescript-eslint/eslint-plugin@latest eslint-plugin-vue@latest @typescript-eslint/parser@latest

生成后的文件

{

"env": {

"browser": true,

"es2021": true,

"node": true

},

"extends": [

"eslint:recommended",

"plugin:@typescript-eslint/recommended",

"plugin:vue/vue3-essential"

],

"parserOptions": {

"ecmaVersion": "latest",

"parser": "@typescript-eslint/parser",

"sourceType": "module"

},

"plugins": [

"@typescript-eslint",

"vue"

],

"rules": {

}

}

eslint虽然也会进行自动格式化,但这并不是eslint的侧重点,所以需要引入prettier进行自动格式化 来统一代码风格

Prettier

pnpm i prettier

在根目录创建.prettierrc.cjs文件并配置

module.exports = {
// 指定最大换行长度
printWidth: 80,
// 缩进制表符宽度 | 空格数
tabWidth: 2,
// 使用制表符而不是空格缩进行 (true:制表符,false:空格)
useTabs: false,
// 结尾不用分号 (true:有,false:没有)
semi: true,
// 使用单引号 (true:单引号,false:双引号)
singleQuote: false,
// 在对象字面量中决定是否将属性名用引号括起来 可选值 "<as-needed|consistent|preserve>"
quoteProps: "as-needed",
// 在JSX中使用单引号而不是双引号 (true:单引号,false:双引号)
jsxSingleQuote: false,
// 多行时尽可能打印尾随逗号 可选值"<none|es5|all>"
trailingComma: "none",
// 在对象,数组括号与文字之间加空格 "{ foo: bar }" (true:有,false:没有)
bracketSpacing: true,
// 将 > 多行元素放在最后一行的末尾,而不是单独放在下一行 (true:放末尾,false:单独一行)
bracketSameLine: false,
// (x) => {} 箭头函数参数只有一个时是否要有小括号 (avoid:省略括号,always:不省略括号)
arrowParens: "avoid",
// 指定要使用的解析器,不需要写文件开头的 @prettier
requirePragma: false,
// 可以在文件顶部插入一个特殊标记,指定该文件已使用 Prettier 格式化
insertPragma: false,
// 用于控制文本是否应该被换行以及如何进行换行
proseWrap: "preserve",
// 在html中空格是否是敏感的 "css" - 遵守 CSS 显示属性的默认值, "strict" - 空格被认为是敏感的 ,"ignore" - 空格被认为是不敏感的
htmlWhitespaceSensitivity: "css",
// 控制在 Vue 单文件组件中 <script> 和 <style> 标签内的代码缩进方式
vueIndentScriptAndStyle: false,
// 换行符使用 lf 结尾是 可选值 "<auto|lf|crlf|cr>"
endOfLine: "auto",
// 这两个选项可用于格式化以给定字符偏移量(分别包括和不包括)开始和结束的代码 (rangeStart:开始,rangeEnd:结束)
rangeStart: 0,
rangeEnd: Infinity
};

处理eslint和prettier冲突

pnpm i -D eslint-config-prettier 
pnpm i -D eslint-plugin-prettier

.eslintrc.json文件中

{

"env": {

"browser": true,

"es2021": true

},

"extends": [

"eslint:recommended",

"plugin:@typescript-eslint/recommended",

"plugin:vue/vue3-essential",

"plugin:prettier/recommended"

],

"parserOptions": {

"ecmaVersion": "latest",

"parser": "@typescript-eslint/parser",

"sourceType": "module"

},

"plugins": ["@typescript-eslint", "vue", "prettier"],

"rules": {

"vue/valid-template-root": "off",

"vue/multi-word-component-names":"off"

}

}

为了方便进行代码质量和格式检查,我们自然希望在提交代码时自动执行Eslint对代码进行检查

这时我们需要用到git hook功能 为git命名创建我们需要的勾子
这里我们使用Husky工具来创建 管理

Husky

npx husky init

如果每一次都提交代码时,我们都对存储库内全量代码执行eslint和prettier,必然会损耗性能

所以我们需要lint-staged工具,可以只对即将提交的代码进行检查和格式化,而不是整个代码库,这样可以节省时间并提高效率。

Lint-staged

pnpm i lint-staged

并且在husky文件夹pre-commit中添加

#!/usr/bin/env sh

. "$(dirname -- "$0")/_/husky.sh"

npx lint-staged

创建lint-staged.config.js文件

export default {
  '*.{js,jsx,ts,tsx}': ['eslint --fix', 'prettier --write'],
  '{!(package)*.json,*.code-snippets,.!(browserslist)*rc}': [
    'prettier --write--parser json',
  ],
  'package.json': ['prettier --write'],
  '*.vue': ['eslint --fix', 'prettier --write'], 
  '*.{scss,less,styl,html}': ['prettier --write'], 
  '*.md': ['prettier --write'],
}

利用git hook除了进行上述格式代码检查外

我们希望对 git commit message 进行格式检查 使得团队commit message保持一致 ,此时就需要用上commitlint以及相应插件

commitlint

pnpm add -D @commitlint/cli @commitlint/config-convertional
那么如何生成规范的commit message呢,此时就需要commitizen以及插件

commitizen

pnpm i -D commitizen cz-conventional-changelog

在package.json中添加文件


"config": {

"commitizen": {

"path": "cz-conventional-changelog"

}

}

安装完后运行指令 git add . 之后 运行指令pnpm run cz

每次提交代码重复使用git太多 我们可以用脚手架来搭建一个指令

//在package.json中添加指令
  "scripts": {
    "commit": "git add -A && cz && git push"
 }

为了获得较为一致的vscode编码体验

我们可以在项目内创建vscode的扩展安装建议和设置
.vscode中分别分别创建extensions.json和settings.json
例如

//extension.json
{

"recommendations": [

"vue.volar",

"vue.vscode-typescript-vue-plugin",

"hollowtree.vue-snippets",

"dbaeumer.vscode-eslint",

"stylelint.vscode-stylelint",

"esbenp.prettier-vscode",

"editorconfig.editorconfig",

"streetsidesoftware.code-spell-checker",

"syler.sass-indented",

"mikestead.dotenv"

]

}

如果使用不同编辑器可以使用创建.editorconfig文件来规范开发

# @see: http://editorconfig.org
root = true

[*] # 表示所有文件适用

charset = utf-8 # 设置文件字符集为 uKf-8

end_of_line = lf # 控制换行类型(lf | cr | crlf)

insert_final_newline = true # 始终在文件末尾插入一个新行

indent_style = space # 缩进风格(tab | space)

indent_size = 2 # 缩进大小

max_line_length = 130 # 最大行长度

[*.md] # 表示仅对 md 文件适用以下规则

max_line_length = off # 关闭最大行长度限制

trim_trailing_whitespace = false # 关闭末尾空格修剪

在vite和ts配置文件中设置src别名

//vite.config.ts
export default defineConfig({

resolve: {

//设置别名

alias: {

'@': path.resolve(__dirname, 'src'),

},

},
})
//tsconfig.json
"compilerOptions": {
	"baseUrl": "./",

	"paths": {

	"@": ["src"],

	"@/*": ["src/*"]

},
}

安装其他依赖 vue-router pinia element-plus axios sass等

文章到这里就结束了,希望对你有所帮助。

标签:10,vue,false,--,企业级,prettier,工程化,true,eslint
From: https://blog.csdn.net/weixin_63625059/article/details/136973313

相关文章

  • 2024年C语言最新经典面试题汇总(1-10)
    C语言文章更新目录C语言学习资源汇总,史上最全面总结,没有之一C/C++学习资源(百度云盘链接)计算机二级资料(过级专用)C语言学习路线(从入门到实战)编写C语言程序的7个步骤和编程机制C语言基础-第一个C程序C语言基础-简单程序分析VS2019编写简单的C程序示例简单示例,VS2019调......
  • 力扣HOT100 - 49. 字母异位词分组
    解题思路:排序注意:返回时不能用List,因为List是抽象类,return的必须是List的具体实现,如ArrayListclassSolution{publicList<List<String>>groupAnagrams(String[]strs){Map<String,List<String>>map=newHashMap<>();for(Stringstr......
  • PAT乙级 1062 最简分数 C语言
    最简分数一个分数一般写成两个整数相除的形式:N/M,其中M不为0。最简分数是指分子和分母没有公约数的分数表示形式。现给定两个不相等的正分数N1​/M1​和N2​/M2​,要求你按从小到大的顺序列出它们之间分母为K的最简分数。输入格式:输入在一行中按N/M的格式给出两个......
  • PAT乙级 1055 集体照 C语言
    集体照拍集体照时队形很重要,这里对给定的N个人K排的队形设计排队规则如下:每排人数为N/K(向下取整),多出来的人全部站在最后一排;后排所有人的个子都不比前排任何人矮;每排中最高者站中间(中间位置为m/2+1,其中m为该排人数,除法向下取整);每排其他人以中间人为轴,按身高......
  • PAT乙级 1054 求平均值 C语言
    本题的基本要求非常简单:给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[−1000,1000]区间内的实数,并且最多精确到小数点后2位。当你计算平均值的时候,不能把那些非法的数据算在内。输入格式:输入第一行给出正整数N(≤100)。随......
  • 3121002754
    这个作业属于哪个课程<软件工程2024-双学位>这个作业要求在哪里<团队作业1——团队展示&选题>这个作业的目标团队协作完成团队展示和选题目录1.团队展示2.选题要求3.团队计划4.团队成员绩效评估方法:1.团队展示1.队名2.队员信息(姓名+学号)陈俊豪3121001738......
  • 在校大学生想从事网络安全,多听老哥几句良言,少挨几顿社会毒打(10年资深安全工程师如是说
    大家好!一直以来都有一些大学生粉丝私聊向我“取经”,可以看得出来很多人对前路多多少少都有些迷茫,我把大家的问题总结了一下,并对每个问题都做了我自己的见解,高频出现的问题有以下5个:1.国内网络安全的薪资是怎么样的?2.网络安全行业真实前景有那么好吗?3.我现在的情况适合做......
  • 银河麒麟系统V10上安装TTS语音模块,并使用C#调用进行语音播报
    银河麒麟系统V10上安装TTS语音模块,并使用C#调用进行语音播报系统版本什么是TTS需求背景环境部署更新系统安装版本包安装完成执行命令测试C#环境下调用语音播报系统版本什么是TTS从文本到语音TTS是“TextToSpeech”的缩写,即“从文本到语音”,是人......
  • 100 天机器学习指南
    100天机器学习指南除了机器学习专栏,我们打算出另外一期专栏,叫做100天机器学习指南,目标是通过100天的深入持续学习,让我们没有机器学习经验的人,也可以从事简单的机器学习工作,为职业生涯寻找增长点,专栏的主要特点如下:从0到1覆盖面广有实战第1–10天:线性代数机器学习......
  • 「04」直播系统:点点鼠标,10秒学会直播系统的安装
    「04」直播系统:点点鼠标10秒学会直播系统的安装在这里给你推荐一款软件:OBS全称(OpenBroadcasterSoftware)是一款开源的实时视频录制和直播工具,广泛应用于游戏直播、教育、会议等多个领域。目前是国外软件有中文无广告全免费最好用的直播工具。OBS提供了强大而简单易用的工具......