editorConfig 指“北”

2,039 阅读2分钟

关于editorConfig

  • 什么是editorConfig?

    官方直译:

    EditorConfig有助于为跨越各种编辑器和IDE的同一项目的多个开发人员维护一致的编码样式。EditorConfig项目由用于定义编码样式的文件格式和一组文本编辑器插件组成,这些插件使编辑器能够读取文件格式并遵循定义的样式。

  • 如何使用?

    分为2种,一种值ide内置支持的,直接配置文件即可;另外一种值需要依赖插件来实现,例如vscode

    使用方式上分为2步:

    ​ (1)确认IDE是否支持, 不支持就安装工具插件

    ​ (2)将配置文件放在,工程的根目录下即可

    ​ (3) 填写或引用配置文件

  • 关于其支持的相关的配置

    • editorConfig github WiKi
    • root 标识 是否位于根目录
    • indent_style 缩进的形式 Tab|space
    • Indent_size 缩进的大小 数字|Tab
    • tab_width 单个tab的大小 默认是indent_size(如果其为数字)
    • end_of_line 结尾换行符 lf(unix)|crlf(window)|cr(mac)
    • charset 文件编码
    • trim_trailing_whitespace 结尾是否允许空格 true|false
    • insert_final_newline 文档是否需要以换行(\n)结尾 true|false
    • max_line_length 在指定的字符数量后强制强行换行。off关闭此功能(使用编辑器设置)。
  • 一些经典工程的配置情况

    react

    # http://editorconfig.org
    root = true
    
    [*]
    charset = utf-8
    end_of_line = lf
    indent_size = 2
    indent_style = space
    insert_final_newline = true
    max_line_length = 80
    trim_trailing_whitespace = true
    
    [*.md]
    max_line_length = 0
    trim_trailing_whitespace = false
    
    [COMMIT_EDITMSG]
    max_line_length = 0
    

    angluar

    # https://editorconfig.org
    
    root = true
    
    [*]
    charset = utf-8
    indent_style = space
    indent_size = 2
    end_of_line = lf
    insert_final_newline = true
    trim_trailing_whitespace = true
    
    [dropdown-toggle.js]
    trim_trailing_whitespace = false
    insert_final_newline = false
    
    [htmlparser.js]
    insert_final_newline = false
    

    babel

    root = true
    
    [*]
    insert_final_newline = true
    charset = utf-8
    trim_trailing_whitespace = true
    end_of_line = lf
    
    [*.{js,json,ts,tsx}]
    indent_style = space
    indent_size = 2
    
    [Makefile]
    indent_style = tab
    
    [*.{md,markdown}]
    trim_trailing_whitespace = false
    

    webpack

    root = true
    
    [*]
    indent_style = tab
    indent_size = 2
    charset = utf-8
    trim_trailing_whitespace = true
    insert_final_newline = true
    max_line_length = 80
    
    [*.{yml,yaml,json}]
    indent_style = space
    indent_size = 2
    
    [test/cases/parsing/bom/bomfile.{css,js}]
    charset = utf-8-bom
    
    [*.md]
    trim_trailing_whitespace = false
    

    vue

    # http://editorconfig.org
    
    root = true
    
    [*]
    charset = utf-8
    indent_style = space
    indent_size = 2
    end_of_line = lf
    insert_final_newline = true
    trim_trailing_whitespace = true
    
    [*.md]
    insert_final_newline = false
    trim_trailing_whitespace = false
    
  • 借鉴主流的配置,形成以下配置

    root = true
    
    [*]
    # 文档编码格式
    charset = utf-8
    # 换行符的使用形式(主要是解决window 和 mac或unix 的不同)
    end_of_line = lf
    # 缩进的大小
    indent_size = 2
    # 缩进的方式
    indent_style = space
    # 文档是否需要以换行结尾(/n)
    insert_final_newline = true
    # 文件结尾是否允许空格
    trim_trailing_whitespace = true
    
    # 对后缀名为 md 的文件生效
    [*.md]
    trim_trailing_whitespace = false
    
    
  • 关于一些注意:

    • 可以将任何一个属性的值设置为unset 来确保,放弃配置,而启用ide默认的行为