硅谷甄选_设置eslint

打印 上一主题 下一主题

主题 1075|帖子 1075|积分 3229

浏览器主动打开的题目

当前我们运行项目的时候,浏览器不会主动打开的;
设置项目,让浏览器主动打开;
package.json


   pnpm run dev运行项目的;
  修改为下面的设置:

   加上了--open设置项;
  


   确实是主动打开了,方便;
  eslint校验工具的设置


   代码检测工具,快10年了;
    插件化的,检测你的代码质量写的高不高;
  安装eslint

  1. pnpm i eslint -D
复制代码

   老娘安装的效果如上;
  生成eslint的设置文件

告诉eslint,你应该怎么工作;
  1. npx eslint --init
复制代码

   老子运行的效果如上所示;
  

   老娘运行的效果如上所示;
  排错线

我推测错误还是和我的npm代理有关系的。

那么我就要设置npm的代理:

然后再次运行下令,如许就成功了:

生成eslint的设置文件


   你要用eslint做什么呀?
  检查语法、发现错误;我们选择第二个;
  

   你的项目接纳什么样的模块式开辟?
  我们肯定是第一个;
  

   你的项目是什么框架,我们肯定是vue;
  

   你是不是要用ts?
  我们是yes
  

   你的项目运行在浏览器还是node?
  我们选择第一个;
  

   我给你创建什么范例的设置文件?
  我们选择JS
  

   你使用eslint去校验vue和ts语法,要安装上面的三个插件;
  eslint-plugin-vue
  typescript-eslint:校验
  typescript-eslint/parser:分析器
  你是不是要现在安装呢?
  我们选择yes
  


   你用什么包管理工具下载呢?
  我们用pnpm;
  在这里,老娘执行的时候,发现还有一个新的包管理工具,叫做bun;
  


   这就是安装完毕了;
  老娘执行完毕就是上面的效果;
  eslint的设置文件


   项目当中就多了,如许一个.eslint.cjs的设置文件;
  老娘这里的设置文件是eslint.cofnig.js。
    这就是eslint工作的说明书;
  .eslint.cjs设置文件(老子)


   module.exports这是对外袒露的设置对象;
  

   这是有7个设置项
  运行环境


规则继续



   检验代码时候用了规则;
    函数有没有重名,对象有没有重名的key,校验语句的分号,这都是有一点规则的,要参照官网看;
    规则继续,会开启保举规则,可以参考官网;
  特定文件校验


   比如说,要校验markdown,就可以这里设置;
  指定分析器


假如你了解webpack,了解babel,这就是分析器;可以将es6语法转换成为es5,让兼容性更好;
分析器一共有三种:


  • Esprima:默认分析器
  • Babel-ESLint:bable分析器
  • @typescript-eslint/parser:ts分析器
分析器选项


插件



   你会发现插件名字是不一样的,我们安装的插件,名字叫做eslint-plugin-vue,但是在设置文件当中就是显示一个vue,这说明了什么?
    说明eslint中插件的前缀可以省略,前缀就是eslint-plugin
  重要:规则设置


   这是最重要的部分,我们是必要参考esint的官网;
  其他的设置项可以不消记忆;
  eslint.config.js设置文件(老娘)

我生成的eslint.config.js文件当中的设置是下面的样子:

  1. export default [
  2.   {files: ["**/*.{js,mjs,cjs,ts,vue}"]},
  3.   {languageOptions: { globals: globals.browser }},
  4.   pluginJs.configs.recommended,
  5.   ...tseslint.configs.recommended,
  6.   ...pluginVue.configs["flat/essential"],
  7.   {files: ["**/*.vue"], languageOptions: {parserOptions: {parser: tseslint.parser}}},
  8. ];
复制代码

下面是这段 ESLint 设置代码的逐行解释:
  1. export default [
复制代码
这一行表示这个文件默认导出一个数组,这个数组包含了多个 ESLint 设置对象或设置引用。
export default 是 ES6 的模块导出语法,它指定了当其他文件导入这个模块时、默认获取的内容。
  1. {files: ["**/*.{js,mjs,cjs,ts,vue}"]},
复制代码
这一行定义了一个设置对象,它指定了 ESLint 应该检查哪些文件。
files 属性包含了一个数组,数组中的字符串是一个 glob 模式,它匹配了项目中所有的 .js、.mjs、.cjs、.ts 和 .vue 文件。
这意味着 ESLint 将对这些文件范例举行检查。
  1. {languageOptions: { globals: globals.browser }},
复制代码
这一行定义了一个设置对象,用于设置语言选项。
在这里,languageOptions 属性被用来指定全局变量。
globals 属性被设置为 globals.browser,这通常是一个对象,包含了在浏览器环境中可用的全局变量。
如许设置可以避免 ESLint 将这些全局变量误报为未定义。
必要注意的是,globals.browser 应该在设置文件的上下文或外部被定义,否则这里会导致引用错误。
  1. pluginJs.configs.recommended,
复制代码
这一行引用了名为 pluginJs 的插件中的 recommended 设置。
这通常意味着包含了一组保举的规则,用于检查 JavaScript 代码的质量和风格。
pluginJs 应该是之前在项目中安装和设置的 ESLint 插件。
  1. ...tseslint.configs.recommended,
复制代码
这一行使用了扩展操作符 ... 来展开 tseslint.configs.recommended 设置数组。
tseslint 可能是一个用于 TypeScript 文件的 ESLint 插件,而 recommended 设置通常包含了一组针对 TypeScript 的保举规则。
如许,这些保举规则就会被添加到当前的设置数组中。
  1. ...pluginVue.configs["flat/essential"],
复制代码
雷同地,这一行展开了 pluginVue.configs["flat/essential"] 设置数组。
pluginVue 应该是针对 Vue.js 文件的 ESLint 插件,
而 "flat/essential" 可能是该插件提供的一种特定设置模式,包含了一组针对 Vue.js 的根本或焦点规则。
  1. {files: ["**/*.vue"], languageOptions: {parserOptions: {parser: tseslint.parser}}},
复制代码
这一行定义了一个专门针对 .vue 文件的设置对象。
files 属性指定了只匹配 .vue 文件。
languageOptions 属性中的 parserOptions 指定了用于分析这些文件的分析器,这里设置为 tseslint.parser,意味着使用 tseslint 插件提供的分析器来分析 Vue 文件中的代码。
这确保了 TypeScript 语法在 Vue 单文件组件中的正确分析和检查。
  1. ];
复制代码
这一行表示设置数组的竣事。
安装vue3环境代码校验插件


  1. 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版本是9.11.1这个版本太高了;
  修改eslint.config.js设置文件

下面是老小子提供的.eslint.cjs的设置文件。
  1. // @see https://eslint.bootcss.com/docs/rules/
  2. module.exports = {
  3.         env: {
  4.                 browser: true,
  5.                 es2021: true,
  6.                 node: true,
  7.                 jest: true,
  8.         },
  9.         /* 指定如何解析语法 */
  10.         parser: 'vue-eslint-parser',
  11.         /* 优先级低于 parse 的语法解析配置 */
  12.         parserOptions: {
  13.                 ecmaVersion: 'latest',
  14.                 sourceType: 'module',
  15.                 parser: '@typescript-eslint/parser',
  16.                 jsxPragma: 'React',
  17.                 ecmaFeatures: {
  18.                         jsx: true,
  19.                 },
  20.         },
  21.         /* 继承已有的规则 */
  22.         extends: [
  23.                 'eslint:recommended',
  24.                 'plugin:vue/vue3-essential',
  25.                 'plugin:@typescript-eslint/recommended',
  26.                 'plugin:prettier/recommended',
  27.         ],
  28.         plugins: ['vue', '@typescript-eslint'],
  29.         /*
  30.          * "off" 或 0 ==> 关闭规则
  31.          * "warn" 或 1 ==> 打开的规则作为警告(不影响代码执行)
  32.          * "error" 或 2 ==> 规则作为一个错误(代码不能执行,界面报错)
  33.          */
  34.         rules: {
  35.                 // eslint(https://eslint.bootcss.com/docs/rules/)
  36.                 'no-var': 'error', //要求使用let或const而不是var
  37.                 'no-multiple-empty-lines': ['warn', {max: 1}], //不允许多个空行
  38.                 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
  39.                 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
  40.                 'no-unexpected-multiline': 'error', //禁止空余的多行
  41.                 'no-useless-escape': 'off', //禁止不必要的转义字符
  42.                 // typeScript (https://typescript-eslint.io/rules)
  43.                 '@typescript-eslint/no-unused-vars': 'error', // 禁止定义未使用的变量
  44.                 '@typescript-eslint/prefer-ts-expect-error': 'error', // 禁止使用 @ts-ignore
  45.                 '@typescript-eslint/no-explicit-any': 'off', // 禁止使用any类型
  46.                 '@typescript-eslint/no-non-null-assertion': 'off',
  47.                 '@typescript-eslint/no-namespace': 'off', // 禁止使用自定义 TypeScript模块和命名空间。
  48.                 '@typescript-eslint/semi': 'off',
  49.                 // eslint-plugin-vue (https://eslint.vuejs.org/rules/)
  50.                 'vue/multi-word-component-names': 'off', // 要求组件名称始终为"-"连接的单词
  51.                 'vue/script-setup-uses-vars': 'error', // 防止<script setup>使用的变量<template>被标记为未使用
  52.                 'vue/no-mutating-props': 'off', // 不允许组件prop的改变
  53.                 'vue/attribute-hyphenation': 'off', // 对模板中的自定义组件强制执行属性命名样式
  54.         },
  55. }
复制代码
我直接将.eslintrc.cjs中的代码,就是上面的代码,复制粘贴到了eslint.config.js中;

   假如我直接复制的代码的话,会出现上面的报错,以是我将文件名字也从eslint.config.js修改成为了.eslintrc.cjs
  eslintignore


设置哪些目次内里的文件,是不必要eslint校验的。


  • dist文件夹是我们打包之后的文件夹的。
  • node_modules不消说了,不必要校验的。
新建一个.eslintignore文件,然后举行设置。

运行脚本


运行这个指令的时候,让eslint去校验src目次下的文件当中的语法;
fix就是修复的意思。


测试一下:

在eslint的规则当中有一条是不允许使用var的。如上图,我们测试下。


   很多人都会以为eslint好恶心的;
  下意识就会想要关闭eslint。
  

   但是建议写项目时候,还是开着eslint,如许代码质量会高一些;

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

东湖之滨

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表