vite+vue3+ts项目基础配置

2023-09-12 17:14:51

1.配置项目启动自动打开浏览器

在package.json文件中:

"scripts": {
    "dev": "vite", // 项目初始化之后默认是这样的
    -->"dev": "vite --open", // 改成这样,加上--open,这样是默认打开浏览器页面
 },

2. 项目中eslint校验工具的配置

  • 首先安装eslint
pnpm i eslint -D
  • 生成配置文件: eslint.cjs
npx eslint --init

3.安装vue3环境代码校验插件并配置eslint规则

  • 安装vue3环境代码校验插件
pnpm install -D eslint-plugin-import eslint-plugin-vue eslint-plugin-node eslint-plugin-prettier eslint-config-prettier eslint-plugin-node @babel/eslint-parser
  • 配置eslint规则:安装完后需要更改eslint.cjs文件
module.exports= {
	env: { // 安装环境
		browser: true, // 浏览器端
		es2021: true,
		node: true,
		jest: true,
	},
	/* 指定如何解析语法 */
	parser: 'vue-eslint-parser',
	/* 优先级低于 parse 的语法解析配置 */
	parserOptions: {
		ecmaVersion: 'latest',
		sourceType: 'module',
		parser: '@typescript-eslint/parser',
		jsxPragma: 'React',
		ecmaFeatures: {
			jsx: true,
		}
	},
	/* 继承已有的规则 */
	extends: [
		'eslint:recommended',
		'plugin:vue/vue3-essential',
		'plugin:@typescript-eslint/recommended',
		'plugin:prettier/recommended',
	],
	plugins: ['vue', '@typescript-eslint'],
	/**
	*"off"或0  ==》 关闭规则
	*"warn"或1 ==》 打开的规则作为警告(不影响代码执行)
	*"error"或2 ==》 规则作为一个错误(代码不能执行,界面报错)
	*/
	rules: {
		// eslint (https://eslint.bootcss.com/docs/rules/)
		'no-var': 'error', // 要求使用 let 或 const 而不是 var
		'no-multiple-empty-lines': ['warn', { max: 1 }], // 不允许多个空行
		'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
		'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
		'no-unexpected-multiline': 'error', // 禁止空余的多行
		'no-useless-escape': 'off', // 禁止不需要的转义字符

		// typeScript (https://typescript-eslint.io/rules)
		'@typescript-eslint/no-unused-vars': 'error', // 禁止定义未使用的变量
		'@typescript-eslint/prefer-ts-expect-error': 'error', // 禁止使用@ts-ignore
		'@typescript-eslint/no-explicit-any': 'off', // 禁止使用any类型
		'@typescript-eslint/no-non-null-assertion': 'off',
		'@typescript-eslint/no-namespace': 'off', // 禁止使用自定义 TypeScript模块和
		'@typescript-eslint/semi': 'off',

		// eslint-plugin-vue (https://eslint.vuejs.org/rules/)
		'vue/multi-word-component-names': 'off', // 要求组件名称始终为"-"连接的单词
		'vue/script-setup-uses-vars': 'error', // 防止<script setup>使用的变量<template>
		'vue/no-mutating-props': 'off', // 不允许组件props的改变
		'vue/attribute-hyphenation': 'off', // 对模板中的自定义组件强制执行属性命名样式 
	}
}
  • 项目根目录下创建点/ .eslintignore忽略文件, 哪些文件夹下面的不需要eslint代码检测
    .eslintignore文件前面有个.点号
dist
node_modules
  • 运行脚本:package.json新增两个运行脚本
"scripts": {
	"lint": "eslint src", // 运行这个指令时去校验src文件夹里面的文件
	"fix": "eslint src --fix", // 把不符合规则的语法纠正
}

4.项目中prettier格式化工具配置,prettierrc.json添加规则

eslint保证js代码质量,prettier保证代码美观。检测语法的工具,属于格式化工具

  • 安装依赖包
pnpm install -D eslint-plugin-prettier eslint-config-prettier
  • 根项目目录下创建prettierrc.json文件添加规则
{
	"singleQuote": true, // 要求字符串都是单引号
	"semi": false, // 语句后面加分号
	"bracketSpacing": true, 
	"htmlWhitespaceSensitivity": "ignore",
	"endOfLine": "auto",
	"trailingComma": "all",
	"tabWith": 2 // 缩进
}
  • 项目根目录下创建 .prettierignore忽略文件:哪些文件格式化的时候不会被格式化
/dist/*
/html/*
.local
/node_modules/**
**/*.svg
**/*.sh
/public/*

5.项目中stylelint工具配置

stylelint为css的lint工具。可格式化css代码,检查css语法错误与不合理写法,指定css书写顺序等。

  • 我们项目中使用scss作为预处理器,安装以下依赖:
pnpm add sass sass-loader stylelint postcss postcss-scss postcss-html stylelint-config-prettier stylelint-config-recess-order stylelint-config-recommended-scss stylelint-config-standard stylelint-config-standard-vue stylelint-scss stylelint-order stylelint-config-standard-scss -D
  • .stylelintrc.cjs配置文件
    官网:https://stylelint.bootcss.com/
module.exports = {
	extends: [
		'stylelint-config-standard', // 配置stylelint扩展插件
		'stylelint-config-html/vue', // 配置vue中template样式格式化
		'stylelint-config-standard-scss', // 配置stylelint scss插件
		'stylelint-config-recommended-vue/scss', // 配置vue中scss样式格式化
		'stylelint-config-recess-order', // 配置stylelint css属性书写顺序插件
		'stylelint-config-prettier', // 配置stylelint和prettierper兼容
	],
	overrides: [
		{
			files: ['**/*.(scss|css|vue|html)'],
			customSyntax: 'postcss-scss',
		},
		{
			files: ['**/*.(html|vue)'],
			customSyntax: 'postcss-html',
		}
	],
	ignoreFiles: [
		'**/*.js',
		'**/*.jsx',
		'**/*.tsx',
		'**/*.ts',
		'**/*.json',
		'**/*.md',
		'**/*.yaml',
	],
	/**
	* null  => 关闭该规则
	* always => 必须
	*/
	rules: {
		'value-keyword-case': null, // 在css中使用v-bind,不报错
		'no-descending-specificity': null, // 禁止在具有较高优先级的选择器后出现被其覆盖
		'function-url-quotes': 'always', // 要求或禁止URL的引号"always"(必须加上引号)
		'no-empty-source': null, // 关闭禁止空源码
		'selector-class-pattern': null, // 关闭强制选择器类名的格式
		'property-no-unknown': null, // 禁止未知的属性(true为不允许)
		'block-opening-brace-space-before': 'always', // 大括号之前必须有一个空格或不能
		'value-no-vendor-prefix': null, // 关闭属性值前缀 --webkit-box
		'property-no-vendor-prefix': null, // 关闭属性前缀 -webkit-mask
		'selector-pseudo-class-no-unknow': [
			// 不允许未知的选择器
			true,
			{
				ignorePseudoClasses: ['global', 'v-deep', 'deep'], // 忽略属性,修改
			}
		]
	}
}
  • 根目录下创建.stylelintignore忽略文件
/node_modules/*
/dist/*
/html/*
/public/*
  • 添加运行脚本,在package.json中写
"scripts": {
	"lint:style": "stylelint src/**/*.{css,scss,vue} --cache --fix"
}

最后配置统一的prettier来格式化我们的js和css,html代码
当我们运行pnpm run format的时候,会把代码直接格式化

  "scripts": {
    "dev": "vite --open",
    "build": "vue-tsc && vite build",
    "preview": "vite preview",
    "lint": "eslint src",
    "fix": "eslint src --fix",
   	"format": "prettier --write \"./**/*.{html,vue,ts,json,md}\"",
   	"lint:eslit": "eslint src/**/*.{ts,vue} --cache --fix",
    "lint:style": "stylelint src/**/*.{css,scss,vue} --cache --fix",
  },

6.项目配置husky

以上配置已经集成好了代码校验工具,但是需要每次手动的去执行命令才会格式化我们的代码。如果有人没有格式化就提交了远程仓库中,那这个规范就没什么用,所以我们需要强制让开发人员按照代码规范来提交。
要做到这件事情,就需要利用husky在代码提交之前触发git hook(git在客户端的钩子),然后执行pnpm run format来自动的格式化我们的代码

  • 安装husky
pnpm install -D husky

安装好后会自动再package.json生成一个命令

"scripts": {
    ...
    "prepare": "husky install" // 生成了新命令
  },

再跑下pnpm run prepare安装husky依赖

  • 执行
npx husky-init

会在根目录下生成一个.husky目录,在这个目录下面会有一个pre-commit文件,这个文件里面的命令在我们执行commit的时候就会执行
.husky/pre-commit文件添加如下命令:

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

当我们对代码进行commit操作的收,就会执行命令,对代码进行格式化,然后再提交。

7.项目commitLint配置

更多推荐

每天几道Java面试题:集合(第四天)

目录第四幕、第一场)大厦楼下门口第二场)大门口友情提醒背面试题很枯燥,加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。第四幕、第一场)大厦楼下门口【面试者老王,门卫甲,门卫乙,面试者奥斯卡】门卫甲:天下熙熙皆为利来,天下攘攘皆为利往,像门卫乙和我这样不为名利专心看门,世界上又有多少人呢?

蓝牙资讯|苹果新款AirPods Pro支持Vision Pro无损音频和IP54防水防尘

苹果公司宣称,USB-C能够带来更多灵活性,现在用户可以使用手机的USB-C接口,为AirPodsPro耳机盒充电。虽然苹果没有详细介绍这款耳机,但在今天的新闻稿中依然透露了一些不一样的地方,例如新款AirPodsPro2升级到了IP54级别(原版不防尘,仅IPX4级抗水),可陪伴用户在恶劣的环境中展开冒险。除此之外,

如何用Java+SpringBoot+Vue构建一个靓车汽车销售网站?

博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟2022-2024年最全的计算机软件毕业设计选题

阿里云通义千问大模型正式开放;玩10次ChatGPT就要消耗1升水

🦉AI新闻🚀阿里云通义千问大模型正式开放,已有超20万企业申请接入测试摘要:阿里云通义千问大模型已经通过备案并向公众开放。用户可以登录官网体验,企业用户可以通过阿里云调用API。阿里云通义千问在一个月的邀测中,就有超过20万企业和机构用户申请接入测试,并与OPPO、得物、钉钉、淘宝、浙江大学等合作。此外,阿里云还开

汇编基础(1)--ARM32

简介ARM32,也称为ARMArchitecturev7,是一种32位的指令集架构(ISA),由ARM公司开发并广泛应用于嵌入式系统和移动设备。ARM32是ARM体系结构中较早的版本,被许多处理器核使用,包括Cortex-A、Cortex-R和Cortex-M系列。ARM32架构的主要特点如下:精简指令集:ARM32使

ArmSom-W3开发板之PCIE的开发指南(二)

一、前言上一篇RK3588平台驱动调试篇[PCIE篇]-PCIE的开发指南(一)已经介绍过如何在3588上使用pcie的资源,这一篇介绍在Linux系统下如何应用pcie接上的设备二、PCI配置空间一个PCIe系统最多有256条Bus,每条Bus上最多挂32个Device,每个Device最多又能实现8个Functio

再聊Java Stream的一些实战技能与注意点

大家好,又见面了。在此前我的文章中,曾分2篇详细探讨了下JAVA中Stream流的相关操作,2篇文章收获了累计10w+阅读、2k+点赞以及5k+收藏的记录。能够得到众多小伙伴的认可,是技术分享过程中最开心的事情。不少小伙伴在评论中提出了一些的疑问或自己的独到见解,也在评论区中进行了热烈的互动讨论。梳理了下相关评论内容,

JVM 虚拟机 ----> Java 内存模型(JMM)

文章目录Java内存模型(JMM)一、运行时数据区域划分二、程序计数器(ProgramCounterRegister)计数器的作用三、Java虚拟机栈(VMStack)四、本地方法栈(NativeMethodStack)五、堆(Heap)1、概述2、新生代、老年代3、创建对象的内存分配六、元空间(MetaSpace)1

【C# 基础精讲】异步和同步的区别

异步(Asynchronous)和同步(Synchronous)是在编程中经常遇到的两种执行模式。它们涉及到程序中任务的执行方式以及对资源的管理方式。在本文中,我们将深入探讨异步和同步的区别、使用场景以及在C#中如何实现异步编程。1.同步执行同步执行是指程序按照严格的顺序依次执行每个任务,当前任务执行完成后再执行下一个

Qt5开发及实例V2.0-第二章Qt模板库工具类及控件

Qt5开发及实例V2.0-第二章Qt模板库工具类及控件第2章Qt5模板库、工具类及控件2.1字符串类2.1.1操作字符串2.1.2查询字符串数据2.1.3字符串的转换2.2容器类2.2.1QList类、QLinkedList类和QVector类2.2.2QMap类和QHash类2.3QVariant类2.4算法及正则表

解密Java多线程中的锁机制:CAS与Synchronized的工作原理及优化策略

目录CAS什么是CASCAS的应用ABA问题异常举例Synchronized原理基本特征加锁过程偏向锁轻量级锁重量级锁其他优化操作锁消除锁粗化CAS什么是CASCAS:全称Compareandswap,字面意思:”比较并交换“,CAS涉及如下操作:假设内存中的原数据为A,旧的预期值为B,需要修改的值为C。首先把A与B进

热文推荐