vue老项目中配置eslint和prettier

 1. eslint--代码规范检查并做部分修复,prettier---统一代码格式,如果希望保存ctrl+s后自动格式化代码还需要配置vscode的settings.json文件。

2. 安装vscode插件

                安装eslint插件

        

                安装prettier插件

        

                

3. 安装依赖

   安装eslit

npx eslint --init

打开.eslintrc.js文件并添加配置:

module.exports = {
	root: true,
	parserOptions: {
		parser: 'babel-eslint'
	},
	env: {
		browser: true,
		node: true,
		es6: true
	},
	extends: [
		'eslint:recommended',
		'plugin:vue/strongly-recommended',
		'@vue/standard'
	],
	// 添加规则
	/**
	 * eslint https://eslint.bootcss.com/docs/rules/
	 * vue扩展 https://github.com/vuejs/eslint-plugin-vue/tree/v6.2.2/docs/rules
	 * https://eslint.vuejs.org/rules/
	 * 0 or 'off'
	 * 1 or 'warn'
	 * 2 or 'error'
	 */
	rules: {
		semi: 0,
		'space-before-function-paren': 0,
		// 最大属性每行
		'vue/max-attributes-per-line': [
			2,
			{
				singleline: 5, // 一行是最大属性数
				multiline: {
					max: 1, // 多行是最大属性数
					allowFirstLine: false // 是否允许属性和标签在同一行
				}
			}
		],
		// 自定义属性断字  my-prop  (always,never,ignore)
		'vue/attribute-hyphenation': [0, 'always'],
		// html标签自关闭
		// html标签自关闭
		'vue/html-self-closing': [
			1,
			{
				html: {
					void: 'always',
					normal: 'always',
					component: 'always'
				},
				svg: 'always',
				math: 'always'
			}
		],
		// 组件名称模板  PascalCase,kebab-case,registeredComponentsOnly,ignores
		// 'vue/component-name-in-template-casing': [1, 'kebab-case'],
		'vue/component-name-in-template-casing': 0,
		// 结束括号间距  关闭>标签括号之前强制执行一致的间距样式
		'vue/html-closing-bracket-spacing': 0,
		// 单行元素的内容前后换行
		'vue/singleline-html-element-content-newline': 0,
		// 禁止注册模板中未使用的组件
		'vue/no-unused-components': 1,
		// 多行元素的内容前后换行
		'vue/multiline-html-element-content-newline': 0,
		// 禁止在与 v-for 相同的元素上使用 v-if
		'vue/no-use-v-if-with-v-for': 1,
		// 要求或禁止在标签的右括号前换行
		'vue/html-closing-bracket-newline': 0,
		// template模板js解析错误
		'vue/no-parsing-error': 1,
		// vue组件的name必须使用大驼峰式命名
		'vue/name-property-casing': [1, 'PascalCase'],
		// 强制组建中方法顺序
		'vue/order-in-components': 2,
		// 强制执行有效的 `v-show` 指令
		'vue/valid-v-show': 1,
		// 要求使用 `===` 和 `!==`
		'vue/eqeqeq': 2,
		// 	禁用 console
		'no-console': 0,
		// 禁用 tab
		'no-tabs': 0,
		// 禁用 var
		'no-var': 1,
		// 强制使用一致的反勾号、双引号或单引号
		quotes: [
			2,
			'single', // 要求尽可能地使用单引号
			{
				avoidEscape: true, // 允许字符串使用单引号或双引号
				allowTemplateLiterals: true // 允许字符串使用反勾号
			}
		],
		// 禁止删除变量
		'no-delete-var': 2,
		// 要求使用 const 声明那些声明后不再被修改的变量
		'prefer-const': [
			2,
			{
				ignoreReadBeforeAssign: false // 这是一个避免与 no-use-before-define 规则(不带 'nofunc' 选项)产生冲突的选项。如果为 true,该规则将忽略声明和第一次赋值之间的变量。默认为 false
			}
		],
		// 强制 generator 函数中 * 号周围有空格  es6 Generators函数
		'generator-star-spacing': 'off',
		// 禁止混合使用不同的操作符 运算符
		'no-mixed-operators': 0,
		// 强制箭头函数的箭头前后使用一致的空格(--fix)
		'arrow-spacing': 1,
		// 禁止或强制在代码块中开括号前和闭括号后有空格(--fix)
		'block-spacing': 1,
		// 不允许在 case 子句中使用词法声明
		'no-case-declarations': 1,
		// 要求使用骆驼拼写法
		camelcase: 0,
		indent: 'off',
		'vue/html-indent': 'off',
		'standard/computed-property-even-spacing': 0,
		'no-mixed-spaces-and-tabs': 0,
		'no-useless-escape': 0,
		'vue/no-multi-spaces': 0,
		'no-unexpected-multiline': 0
	}
};

安装prettier

npm install --save-dev prettier

在项目根目录新建 .prettierrc.js文件并打开添加配置

module.exports = {
	endOfLine: 'auto',
	// 书写宽度
	printWidth: 80,
	// 语句末尾打印分号
	semi: true,
	// 使用单引号
	singleQuote: true,
	// 尾随逗号
	trailingComma: 'none',
	// 在方法的花括号前面加空格
	spaceBeforeFunctionParen: true,
	// 用键位tab缩进
	useTabs: true,
	// 标签换行不完整问题
	htmlWhitespaceSensitivity: 'ignore',
	// 在唯一的箭头函数参数周围包含括号
	arrowParens: 'always'
};

4. 解决eslint配置和prettier配置的冲突问题 

冲突的本质在于 eslint既负责了代码质量检测,又负责了一部分的格式美化工作,格式化的部分规则和 prettier不兼容。

打开.eslintrc.js文件,在extends中添加"plugin:prettier/recommended",这样写的目的是让pettier的规则,放在eslint规则扩展中。

extends: [
    'eslint:recommended',
	'plugin:vue/strongly-recommended',
	'@vue/standard',
    'plugin:prettier/recommended',
],

5. 让vscode自动保存代码并进行格式化 

这个需要在vscode中进行配置,按住ctrl+shift+p,输入setting,打开setting.json,完成以下配置:

 // 保存时自动启用 eslint --fix 自动修复
    "editor.codeActionsOnSave": {
      "source.fixAll.eslint": true,
      "eslint.autoFixOnSave": true
    },

    // 每次保存的时候以下文件类型将代码按eslint格式进行修复
    "eslint.validate": [
      "javascript",
      "javascriptreact",
      "html",
      "vue"
    ],

    // #每次保存的时候自动格式化
    "editor.formatOnSave": true,

    // 当编辑器失去焦点时,自动保存更改了的编辑器
    "files.autoSave": "onFocusChange",

 6. 在package.json中配置新指令

"scripts": {
  "lint": "vue-cli-service lint",
  "lint:eslint": "eslint --fix --ext .js,.ts,.vue ./src",
  "prettier": "prettier --write .",
},
运行npm run lint 进行全局检查和修复
运行npm run prettier 进行全局prettier格式化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值