ホームページ  >  記事  >  開発ツール  >  標準化された方法で VSCode を構成するにはどうすればよいですか?コードをフォーマットするにはどうすればよいですか?

標準化された方法で VSCode を構成するにはどうすればよいですか?コードをフォーマットするにはどうすればよいですか?

青灯夜游
青灯夜游転載
2021-11-01 10:45:055575ブラウズ

VSCode標準構成を実行するにはどうすればよいですか?コードをフォーマットするにはどうすればよいですか?次の記事では、さまざまな仕様の基本的な構成を紹介し、これらの構成仕様の使用方法とコードのフォーマットについて説明します。

標準化された方法で VSCode を構成するにはどうすればよいですか?コードをフォーマットするにはどうすればよいですか?

これらの構成仕様を使用してコードをフォーマットします

私たちは日々の業務で、あらゆる種類のプロジェクトに遭遇します。プロジェクトで使用される技術アーキテクチャが異なる場合、対応する異なるコード仕様が存在する可能性があります。コーディングの習慣は人それぞれ異なり、短期間で変更するのは難しいため、新しいプロジェクトを開発するときにさまざまな標準エラーに遭遇することがよくあります。 [推奨学習: "vscode チュートリアル"]

現時点では、一連の構成があれば、プロジェクトのルールを考慮せずにコードを記述することができます。保存する 現在のプロジェクトで設定されているルールに従ってすべてのエラーを自動的に修正します。これにより、開発経験と効率が大幅に向上することは間違いありません。

以下では、この目的を達成するために何をする必要があるのか​​、また各種仕様の基本構成について詳しく説明します。

EditorConfig

まず、インデントや行の折り返し方法などの基本的な仕様が必要です。すべてのチーム、すべての言語、すべての編集者にとって機能する必要があります。

editorconfig はこれを達成するのに役立ちます。これにより、すべての開発者が基本的なコーディング規約に沿って調整できるようになります。

私たちがする必要があることは次のとおりです:

  • EditorConfig プラグインをインストールします (一部のエディターは をサポートしています) EditorConfig# はデフォルトで ## です。これらのエディタにはプラグインのインストールは必要ありません) を参照してください。

  • 設定

    .editorconfig ファイル。

#.editorconfig

の使用法と例は次のとおりです: <pre class="brush:js;toolbar:false;">## 打开文件时,EditorConfig 插件会在打开的文件的目录和每个父目录中查找名为 .editorconfig 的文件。 ## 如果到达根文件路径或找到具有 root=true 的 EditorConfig 文件,将停止对 .editorconfig 文件的搜索。 ## 如果 root=true 没有配置, EditorConfig 插件将会在工程之外寻找 .editorconfig 文件 root = true ## 使用规则匹配文件 ## * 匹配任何字符串,路径分隔符 (/) 除外 ## ** 匹配任意字符串 ## ? 匹配任何单个字符 ## [name] 匹配给定的字符串中的任何单个字符 ## [!name] 匹配不在给定字符串中的任何单个字符 ## {s1,s2,s3} 匹配任意给定的字符串 ## {num1..num2} 匹配num1和num2之间的任何整数,其中num1和num2可以是正数或负数 ## 如规则[*.{js}]只对 .js 文件生效。一般来说,我们配置 [*] 对所有文件生效。 [*] ## 缩进方式。 值可以是 tab 或者 space indent_style = space ## 缩进大小。当设置为 tab 时,会取 tab_width 的值。 indent_size = 2 ## 通常不需要设置。当 indent_size = tab 时,才会生效。 tab_width = 2; ## 设置为 lf、cr 或 crlf 以控制如何表示换行符。 end_of_line = lf ## 设置为 latin1、utf-8、utf-8-bom、utf-16be 或 utf-16le 来控制字符集。 charset = utf-8 ## 设置为 true 以删除换行符之前的任何空格字符,设置为 false 以确保不会。 trim_trailing_whitespace = true ## 设置为 true 以确保文件在保存时以换行符结束,设置为 false 以确保不以换行符结束。 inset_final_newline = true</pre>

Eslint フロントエンド開発エンジニアにとって、JavaScript は間違いなく最高のパートナーです。 ESLint はプラグイン型の JavaScript コード静的検査ツールであり、その中心となるのは、コード解析によって得られた AST (Abstract Syntax Tree) に対してパターン マッチングを実行し、合意された仕様を満たしていないコードを見つけることです。

コミュニティにはさまざまなバージョンの仕様があり、各チームが独自の仕様を開発することもあります。コーディングスタイルは数千種類ありますが、プロジェクト構成は 1 つだけであり、複数人で共同作業を行うと、必ず標準エラーが発生します。 Care ルールが何であるかを知る必要がないように、一連のルールを設定する必要があります。ファイルを保存すると、コードはエンジニアリング仕様に従って自動的にフォーマットされます。 ######どうやってするの?

Eslint はスタイル ガイド ルールを提供し、どれが修正可能であるかを明確にします:

文体上の問題

私たちがする必要があるのは:

Eslint とコミュニティによって推奨される仕様

eslint-config-airbnb
    (他の仕様も可能) をローカルにインストールします。プラグインは、インストールされた Eslint ライブラリを使用します (まだインストールしていない場合:
  • npm i eslint eslint-config-airbnb

    )。 VSCode

    Eslint プラグイン
  • をインストールします。
  • .eslintrc.js
  • 構成ファイルを追加します。
  • VSCode の

    setting.json
  • ファイルの構成を変更します。
  • このうち、プロジェクトのルールに従って自動的に整形したい場合は、4番目のステップが必須です。

setting.json

Eslint プラグイン をインストールしている場合は、

cmd shif p# # を押してください。

#defaultSettings.json ファイルを開き、cmd f を押して eslint を検索して、VSCode の ESlint のすべてのデフォルト構成を表示します。それにはいくつかの変更を加える必要があります。 引き続き cmdShiftp を押して、settings.json

ファイルを開きます。このファイルはユーザー定義の構成であり、内部の構成は

defaultSettings.json 内の同じ名前の構成を上書きします。必要な効果を実現するために、このファイル内の ESLint プラグイン の構成にいくつかの変更を加えます。 まず、保存時に を自動的にフォーマットしたいと考えています。この効果を実現するには 3 つの構成があります: <ul> <li> <code>editor.formatOnSave  + eslint.format.enable。前者配置:保存时格式化,后者配置:将 ESlint 规则作为格式化标准

  • eslint.autoFixOnSave
  • editor.codeActionsOnSave
  • 其中,第二种 eslint.autoFixOnSave 已经被废弃。使用它会提示更改为 editor.codeActionsOnSave

    而第一种和第三种都可以实现,但是更推荐使用第三种 editor.codeActionsOnSave,它支持更高的可配置性。

    使用  editor.codeActionsOnSave 的时候,我们需要禁用其它格式化程序,最好的做法是将 ESlint 设置为格式化程序默认值。并且当我们这么做的时候,我们可以关闭 editor.formatOnSave,否则我们的文件将被修复两次,这是没有必要的。

    以下便是我们需要在 setting.json 里新增的配置。(注释的地方是默认配置,无需新增)

    // 编辑的时候检测还是保存的时候检测,默认在编辑的时候就检测。 default: onType
    // "eslint.run": "onType",
    
    // default: false
    // "eslint.format.enable": false,
    
    // default: false
    // "editor.formatOnSave": false,
    
    "editor.codeActionsOnSave": {
      "source.fixAll.eslint": true
    },
    "[vue]": {
      "editor.defaultFormatter": "dbaeumer.vscode-eslint"
    },
    "[javascript]": {
      "editor.defaultFormatter": "dbaeumer.vscode-eslint"
    },
    
    // 始终在VSCode的右下角状态栏显示 ESLint 字样,查看 ESLint 运行状态,确保 ESLint 在正常运行
    "eslint.alwaysShowStatus": true,

    .eslintrc.js

    接下来,我们聊聊 .eslintrc.js 文件。这个文件将会规定我们的 ESLint 具体该使用什么规则去规范我们的代码。

    我们自己往往不需要去配置这个文件,因为工程一般都会配置好了一套规则。我们只需要使用这套规则去格式化代码就好了。

    但是看懂每条规则的意义,对于我们也是很重要的,例如你想自己新建工程。

    接下来,我将从 普遍用法Vue项目特殊配置React项目特殊配置 来看下如何配置 .eslintrc.js 文件。

    普遍用法

    // 启用对 es6 的语法和全局变量的支持
    {
      env: {
        es6: true,
      },
    }
    • 如果我们想让 ESLint 不仅能识别浏览器环境中的语法,其它环境(Node)我们也希望它能识别,这时候我们可以这样配置:
    {
      env: {
        browser: true,
        node: true,
      },
    }
    • 在一些项目中,我们需要特殊的解析器去解析我们的代码,是否是符合规范的。这时候我们可以使用 Parser
    {
      parser: &#39;babel-eslint&#39;,
    }
    {
      globals: {
        "__DEV__": true,
        "If": true,
        "For": true,
        "POBrowser": true
      },
    }
    • ESLint 支持使用第三方插件。在使用插件之前,你必须使用 npm 安装它。在配置文件里配置插件时,可以使用 plugins 关键字来存放插件名字的列表。插件名称可以省略 eslint-plugin- 前缀。
    {
      	plugins: [&#39;react-hooks&#39;, &#39;jsx-control-statements&#39;],
    }
    • ESLint 附带有大量的规则。你可以使用注释或配置文件修改你项目中要使用的规则。要改变一个规则设置,你必须将规则 ID 设置为下列值之一:
      • "off"0 - 关闭规则
      • "warn"1 - 开启规则,使用警告级别的错误:warn (不会导致程序退出)
      • "error"2 - 开启规则,使用错误级别的错误:error (当被触发的时候,程序会退出)
    {
        rules: {
            eqeqeq: &#39;off&#39;,
            curly: &#39;error&#39;,
            quotes: [&#39;error&#39;, &#39;double&#39;]
        }
    }
    • 配置定义在插件中的一个规则的时候,你必须使用 插件名/规则ID 的形式。比如:
    {
      plugins: [&#39;react-hooks&#39;, &#39;jsx-control-statements&#39;],
      rules: {
        &#39;arrow-parens&#39;: 0,
        &#39;react-hooks/rules-of-hooks&#39;: &#39;error&#39;,
        &#39;react-hooks/exhaustive-deps&#39;: &#39;warn&#39;,
        &#39;jsx-control-statements/jsx-use-if-tag&#39;: 0,
        &#39;react/jsx-no-undef&#39;: [&#39;error&#39;, { &#39;allowGlobals&#39;: true }],
        &#39;no-prototype-builtins&#39;: &#39;off&#39;,
      }
    }
    {
      extends: &#39;zoo/react&#39;,
    }

    Vue 特殊配置

    由于 Vue 单文件组件的特殊写法,针对 Vue 项目,需要做一些特殊的 ESLint 配置,以达到自动化的效果。

    高亮语法支持

    安装 Vetur插件

    使用 ESLint 而不是 Vetur 做代码检测

    Vetur 为 Vue 项目带来了语法高亮和便捷的操作。但是它本身也会自动开启对 Vue 文件的代码检测。这往往会和我们配置的 ESLint 有冲突。为了避免这一点,需要在 VSCode 的 settings.json 中做一些配置:

    // 不允许它格式化代码
    "vetur.format.enable": false,
    // 不允许它做代码检测
    "vetur.validation.template": false,
    "vetur.validation.script": false,
    "vetur.validation.style": false,

    无需将 vue 添加进 eslint.validate,因为 eslint.probe 默认会检测 vue 类型文件。

    然后,我们需要配置 .eslintrc.js 文件,里面用到的插件都需要本地安装。

    module.exports = {
        root: true,
        // 如果是SSR项目,则需要配置node:true
        env: {
            browser: true,
            node: true,
        },
        // 为什么是这样的parser配置?https://eslint.vuejs.org/user-guide/#how-to-use-a-custom-parser
        parser: &#39;vue-eslint-parser&#39;,
        parserOptions: {
            parser: &#39;babel-eslint&#39;,
        },
        extends: [
            // 如果是nuxt.js的脚手架项目,则需要安装对应的插件并做以下配置
            &#39;@nuxtjs&#39;,
            &#39;plugin:nuxt/recommended&#39;,
    
            // 让eslint可以规范vue文件
            &#39;plugin:vue/base&#39;,
            // vue3的项目需要使用,如果是vue2项目,使用 plugin:vue/recommended
            &#39;plugin:vue/vue3-recommended&#39;,
        ],
        plugins: [
            // 注意这里不能配置 html 选项,为什么?https://eslint.vuejs.org/user-guide/#why-doesn-t-it-work-on-vue-files
            &#39;vue&#39;,
        ],
        // 配置自己的规则,覆盖上面继承的规则
        rules: {
            // 配置js的缩进为 2,switch case 语句的 case 也使用2个空格缩进
            indent: [&#39;error&#39;, 2, { SwitchCase: 1 }],
            // 使用 eslint 检测 template里的代码,这里我配置 2 个空格缩进
            &#39;vue/html-indent&#39;: [&#39;error&#39;, 2],
        },
    };

    以上配置,大家根据自己的项目特点,自行删减即可。比如,如果你的项目不是 nuxt.js 的,可以去掉 extends 里的 '@nuxtjsplugin:nuxt/recommended

    如果是 Vue cli 创建的项目,并且没有使用 ts,需要在项目根目录添加 jsconfig.json 文件。有关 jsconfig 的配置在这里:jsconfig

    React 特殊配置

    React 项目中,因为是 .js 文件,一般不需要特殊的配置。但即使如此,针对 JSX 和 Hooks 的使用规则,我们仍然需要做一些事情

    针对 React Hooks

    lint 规则具体强制了哪些内容?

    eslint-plugin-hooksReact 源码目录 packages 里提供的一个包。它会强制执行 Hooks 规则,它也是 Hooks API 的一部分。

    npm i eslint-plugin-reack-hooks

    .eslintrc.js

    module.exports = {
      // eslint-plugin 可以简写
      plugins: [&#39;react-hooks&#39;],
    }

    针对 JSX

    JSX 不过只是 React 的一个语法糖,其最终都会被 React 调用 React.createElement 编译城 React Element 形式。所以在 17 版本之前,如果我们使用到了 JSX 但是没有引入 React ,会提示 'React' must be in scope when using JSX。 而在 17 版本之后, React 与 babel 和 TypeScript 编译器合作,将转化任务交给了编译器自动转化。

    如果我们是之前的转化版本,我们要获得对 JSX 的语法支持,我们需要安装 eslint-plugin-react,它内置了对 JSX 的代码规范检测。

    {
      extends: [&#39;plugin:react/recommended&#39;],
    }

    如果不想使用内置的规则,我们也可以自定义规则

    {
      plugins: [&#39;react&#39;],
      parserOptions: {
        ecmaFeatures: {
          jsx: true,
        },
      },
      rules: {
        &#39;react/jsx-no-undef&#39;: [&#39;error&#39;, { "allowGlobals": true }],
      },
    }

    如果是新的转化版本,则需要做一点小小的更改,以便在使用 JSX 的时候,不会要求我们引入 React

    {
      extends: [&#39;plugin:react/recommended&#39;, &#39;plugin:react/jsx-runtime&#39;],
    }

    StyleLint

    在完成了以上的配置之后,我们已经可以对 .js 文件、.vue 文件的 templatescript 模块实现代码规范和保存时自动格式化了。但是对于 .css、.less、.scss 文件和 .vue 文件的 style 模块,我们还需要做额外的配置,否则样式部分不规范,我们也是没法检测并自动修复的。

    我们需要做的是:

    • npm i stylelint stylelint-config-standard stylelint-scss

    • 安装 Stylelint插件

    • 配置 .stylelintrc  文件。

    • 配置 VSCode 的 setting.json 文件。

    其中,第四步也是必须的,我们需要做如下配置:

    // 防止编辑器内置的 [css] [less] [scss] 校验和此扩展 [stylelint] 报告相同的错误
    "css.validate": false,
    "less.validate": false,
    "scss.validate": false,
    
    // 保存时使用 eslint 和 stylelint 进行修复
    "editor.codeActionsOnSave": {
      "source.fixAll.eslint": true,
      "source.fixAll.stylelint": true
    },
    // 默认会对很多文件进行检测,这是不必要的,我们只让他检测样式
    "stylelint.validate": [
    		"css",
    		"html",
    		"less",
    		"postcss",
    		"sass",
    		"scss",
    		"source.css.styled",
    		"styled-css",
    	],

    以上,我们的目标已经达成啦!

    Prettier

    代码格式化工具。很多同学都接触过这个工具,我个人深入了解了一下这个工具,以下是我的个人见解。先看下 Prettier 官方的一段话吧。

    So why choose the “Prettier style guide” over any other random style guide? Because Prettier is the only “style guide” that is fully automatic. Even if Prettier does not format all code 100% the way you’d like, it’s worth the “sacrifice” given the unique benefits of Prettier, don’t you think?

    可以看到,这个工具旨在让不同公司不同团队不需要考虑代码规范,实现自动化保存格式化。牺牲掉个性化内容。

    但是往往不同的团队对规则的使用是不一致的,如果强制所有文件都使用 prettier 自动格式化,会出现与公司配置的代码规范检查工具(例如 ESLint) 冲突的情况。实际表现为自动保存之后,依然出现 ESLint 格式报错。

    想让 prettier 生效,需要我们在 VSCode 里配置:

    // 所有文件都使用 prettier 格式化
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    
    // 只对 js 文件使用 prettier
    "[javascript]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
     }
    
    // 所有文件都不指定自动格式化方式
    "editor.defaultFormatter": null,
    
    // js文件不指定自动格式化方式
    "[javascript]": {
        "editor.defaultFormatter": null
     }

    可以使用 .prettierrc 文件、VSCode 的 setting.json.editorConfig 来配置 prettier

    推荐不常使用的文件类型,使用 prettier 去格式化。js,json,jsx,html,css,less,vue 等这些文件,使用工程统一的规范去格式化。

    所以,我觉得完全可以卸载它。不知道你怎么看呢?

    以上就是全部内容了,希望对你有所帮助~

    更多编程相关知识,请访问:编程入门!!

    以上が標準化された方法で VSCode を構成するにはどうすればよいですか?コードをフォーマットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。