ESlint Prettier Git 中使用 ignore忽略文件的规则解释
概述
我们经常在项目中使用.gitignore去忽略文件,比如
# .gitignore忽略项目依赖和打包文件
node_modules
dist
其实,除了Git,ESLint和Prettier同样提供了对应的ignore文件
.eslintignore为ESLint忽略指定文件.prettierignore为Prettier忽略指定文件
同Git,显然我们不希望对如node_modules依赖文件夹中的文件进行格式化或者做代码质量检查,所以忽略指定文件是必要的。
幸运的是,ESLint和Prettier的忽略规则与Git是一致的。
对于ESLint,其官网提到:
Please see .gitignore’s specification for further examples of valid syntax.
对于Prettier,其官网提到
.prettierignore uses gitignore syntax.
接下来我们来详细看一下,.gitignore都有哪些规则
规则明细
- 对于空白符,比如空格,git是忽略了的。所以可以借助空格回车来使得文件更易读。
#表示注释- 对于
/斜杠,他有两个语义。当被放到一条规则的起始或者中间,则这条规则被表示为一个相对于.gitignore文件的目录或文件,反之,若起始或中间没有斜杠,则表示匹配到任意目录或文件。比如一条规则是App.vue,那么即使App.vue被放到了src目录内,同样也是能匹配到的。另外一个语义则是/被放到一条规则的尾部,此时其用来区分一个目录,而非一个文件。他与第一个语义不冲突,比如frotz/代表任意目录下包含frotz/的目录。 !取反符号表示忽略指定目录或文件,言下之意就是让git再次跟踪其包含的文件。其规则与上一条也不冲突。但有一个注意事项,即指定忽略的文件或目录的父目录不能被整体忽略。比如我先包含src,之后忽略!src/App.vue这是不生效的。可以写成src/*,后忽略!src/App.vue。**有三种语义,**/foo表示任意目录下的foo;abc/**表示abc之后任意目录下的文件;a/**/b表示a目录下任意级目录的子目录b。
举例
# 排除了 foo/bar 的所有文件。
/*
!/foo
/foo/*
!/foo/bar
参考
Prettier官网: https://prettier.io/docs/en/ignore.html
ESLint官网:https://eslint.org/docs/user-guide/configuring/ignoring-code
Git官网:https://git-scm.com/docs/gitignore#_pattern_format