如何为你的Django项目设置EditorConfig

177 阅读3分钟

团队成员之间不一致的文本格式会导致不必要的编辑,甚至是错误。 所以最好在你的项目中规范文本格式。

EditorConfig是文本编辑器配置的标准。 它内置在许多文本编辑器中,如PyCharm和GitHub的网络编辑器。 对于其他文本编辑器,你需要安装一个小插件,几乎所有太阳下的文本编辑器都可以使用。

要为你的项目设置 EditorConfig,在你的仓库根目录下创建一个名为.editorconfig 的文件。注意. 的前缀,这使得该文件在 Unix 系统上被隐藏。.editorconfig 文件使用 INI 文件语法,由 Python 的configparser 模块解析。

这里是一个适用于大多数 Django 项目的.editorconfig 文件。

# http://editorconfig.org

root = true

[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true

[*.py]
indent_size = 4

下面是这个配置的作用。

  • root = true 声明这个 是项目的根目录。这可以阻止 EditorConfig 插件从父目录的任何 文件中合并选项。.editorconfig .editorconfig

  • [*] 部分定义了所有文件的规则。 [*.py]部分覆盖了Python文件的规则。

  • charset = utf-8说文件应该用UTF-8 文本编码保存。 这几乎是所有东西的标准编码,现在。

  • end_of_line = lf 声明文件应该使用Unix风格的LF(Linefeed)换行符( )。即使在Windows上,"CR LF"( )是操作系统的默认值,为了兼容性,最好在代码中使用LF。"\n"``"\r\n"

  • indent_style = space 在 "制表符与空格 "的战争中选择了一个阵营。

  • indent_size = 2 Django项目中的大多数文件格式,如HTML、CSS、JavaScript、JSON和YAML,都采用这种缩进方式,即一个缩进级别为两个空格。

  • trim_trailing_whitespace = true 告诉你的编辑器,当你按下 "保存 "键时,删除行末的任何空白(空格、制表符等)。 尾部空白字符通常在代码中没有任何意义,但会导致恼人的 "差异噪音"。 这种现象是指开发人员改变了文件的一个部分,但微不足道的编辑,如删除尾部空白,让人觉得他们接触了不相关的行。

  • insert_final_newline = true 当你按下 "保存 "键时,确保你的文件以换行符结束。 这是POSIX(Unix操作系统的标准)对文本文件的技术要求。 大多数工具可以处理缺少最后换行符的文本文件,但有些工具不能,甚至默默地跳过最后一行,所以最好总是有换行符。

    (如果你使用Git,你甚至可能已经看到它在遇到没有最后换行的文本文件时的警告。

   $ git diff --cached
diff --git a/example.txt b/example.txt
new file mode 100644
index 0000000..5e1c309
--- /dev/null
+++ b/example.txt
@@ -0,0 +1 @@
+Hello World
\ No newline at end of file
  • 这一节宣布了 [*.py]部分声明了.py 文件的特定规则。它的唯一规则是将缩进改为四个空格,而不是两个。这遵循了 PEP 8, Python 风格指南中的缩进规则

对于许多项目来说,你应该可以按原样使用这个.editorconfig 文件。 不幸的是,没有简单的方法来重新格式化你现有的文件以符合所有的规则。 但是 pre-commit 有两个小工具,可以帮助处理特定的规则 (trailing-whitespaceend-of-file-fixer)[这些在本书后面有介绍]。

你可以通过添加更多的部分来定制其他的文件类型,甚至是特定的文件名。 例如,确保你的Makefile,用标签来缩进。

[Makefile]
indent_style = tab

你的团队的文本编辑器都是同步的!