Prettier是什么
为什么使用prettier
在进行多人协作开发时经常出现格式不统一的问题,比如字符串采用双引号还是单引号,句尾是否加入分号等等,虽然可以在开发之前制订一些代码风格的规则,但是随着项目的迭代,这些规则也会被束之高阁。所以需要引入一款自动的代码格式的插件,即prettier。
安装
- 安装
npm install --save-dev --save-exact prettier
yarn add --dev --exact prettier
pnpm add prettier -D
配置文件
创建.prettierrc.js
,在文件内以对象格式编写配置信息
module.exports ={
printWidth: 80, // 行长度。不过不能只理解为最大值,而是期望值,
tabWidth: 2, // 缩进长度
useTabs: false, // 是否使用tab进行缩进。false指的是使用空格进行缩进
semi: true, // 句尾是否打印分号
singleQuote: false, // 是否使用单引号替换双引号
// 对象字面量中的属性是否使用引号。
// as-needed 只在需要时添加引号,比如{"my job": "programer"},其他都不添加
// consistent 当有一个需要时就都添加引号
// preserver 保留用户输入的
quoteProps: 'as-needed',
jsxSingleQuote: false, // JSX中是否使用但引号替换双引号
// 多行逗号分隔的数据结构是否使用尾后逗号
// es5 es5中的有效数据句尾逗号
// none 无句尾逗号
// all 都使用句尾逗号
trailingComma: 'es5',
// 对象字面了的括号是否在括号间使用空格
// true -- { foo: bar }
// false -- {foo: bar}
bracketSpacing: true,
bracketSameLine: false, // 将HTML类型结构(HTML、JSX、Vue、Angular)中的 > 符号放在最后一行的末尾而不是下一行
// 单个参数的箭头函数是否使用括号包裹
// always 总是进行包裹
// awaid 禁止包裹
arrowParens: "always",
// 这两个range指的是格式化文件内部分代码的范围偏差
// 没看出有什么用-.-
rangeStart: 0,
rangeEnd: Infinity,
// parser指的是使用什么解释器,prettier会根据文件类型自动判断,所以无需设置这个选项
// None 是没有默认值,可以填写babel、css等
// parser: 'None',
requirePragma: false, // prettier 可以指定特定的注释规则下才进行处理
insertPragma: false, // 作用和requirePragma一样,但是优先级低于requirePragma
// 如何包装markdown文本
// always 当超过最大宽度时进行包装
// never 从不进行包装
// preserve 按原样进行包装
proseWrap: 'preserve',
// html 空白字符的检测灵敏度
// css 尊重css中display的属性
// strict 标签周围的空格很重要
// ignore 标签周围的空格不重要
htmlWhitespaceSensitivity: 'css',
vueIndentScriptAndStyle: false, // 是否缩进vue文件script和style标签
endOfLine: 'lf', // 行尾格式 lf crlf cr auto
// 如何格式化文件中嵌入的引用代码
// auto 能识别的话就进行格式化
// off 不进行格式化
embeddedLanguageFormatting: 'auto',
}
prettier同时支持其他格式的配置文件,比如.prettierrc
、.prettier.json
、prettier.config.js
等。
使用
通过输入命令 npx prettier --write .
对所有文件进行格式化,也可以指定路径,npx prettier --write src/app
。
如果只想检查是否需要格式化可以使用命令 npx prettier --check .
集成其他lint插件
一般来说我们在项目中会用到其他的lint插件,比如进行js代码质量检测的eslint,进行css样式检测的stylelint,虽然大家的侧重点不一样,但是还是可能产生冲突,可以使用一些现有的预设配置避免这些冲突,比如:
eslint-config-prettier
tslint-config-prettier
stylelint-config-prettier
如果想要将prettier作为lint的检测规则可以使用以下插件:
eslint-plugin-prettier
tslint-plugin-prettier
stylelint-prettier