Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add prettier and commit hooks #144

Merged
merged 18 commits into from
May 17, 2018
Merged

feat: add prettier and commit hooks #144

merged 18 commits into from
May 17, 2018

Conversation

u3u
Copy link
Contributor

@u3u u3u commented May 16, 2018

随着项目贡献的人越来越多,从而也导致了代码风格不统一,所以我认为有必要使用工具来统一代码风格

功能

  • 使用 Prettier 来统一代码风格(最小化配置与当前风格的冲突)
  • 添加 .editorconfig 来统一编辑器配置
  • 添加 gitHooks 在提交时自动修复 eslint 和格式化代码

杂项

  • 重新格式化了所有代码 (js / json / md)
  • 修复了大量 eslint 错误

由于几乎改动了所有文件,或许有些地方的格式化不尽人意,欢迎大家一起 review 讨论 (°∀°)ノ

@EYHN
Copy link
Contributor

EYHN commented May 16, 2018

@u3u cool

@EYHN
Copy link
Contributor

EYHN commented May 16, 2018

@u3u 对 vuepress 拓展的 custom container 语法处理有误。https://vuepress.vuejs.org/guide/markdown.html#custom-containers

@u3u
Copy link
Contributor Author

u3u commented May 16, 2018

@EYHN
是的,这个地方需要使用 <!-- prettier-ignore --> 忽略格式化,我稍后修改一下~

@EYHN
Copy link
Contributor

EYHN commented May 16, 2018

太麻烦了 或者说太丑了

@EYHN
Copy link
Contributor

EYHN commented May 16, 2018

@u3u
Copy link
Contributor Author

u3u commented May 16, 2018

@EYHN 这个是配置箭头函数参数必须带括号,避免 eslint 警告


找到原因了,标题如果以中文结尾后面需要加一个空格或者换一行就可以啦

- ::: warning 注意
+ ::: warning 注意 
该网站在国外无法访问,故以下演示无效
:::
::: warning 注意
+ 
该网站在国外无法访问,故以下演示无效
+ 
:::

https://prettier.io/playground/#N4Igxg9gdgLgprEAuZSkAIDuBDATlASygHN1ALm0HhDAHSkFPowRX9BNr0Ap1QX7VA0TUAPTQVZtB+6MDvUwDD-gUVNAp3KBoOUAo9oC5PToAlTGmiQ1FaLHkIlyFdDQYsOPASIkz5q5VAvr8RUpRV0mbLnyFipshVahKQAGhAIAAcYAmgAZ2RQPFwITAAFPAQolGwANwgCABMAkAAjXGwwAGs4GABlYOK7ZBhcAFc4QKIIuFwYBKLiAFtsZAAzbAAbNsCAKwiADwAhItLyiuweuAAZIjhBkbGQatw23GQQPtwS7PioPODcIhgAdRyYAAtkAA4ABkDriDa7ouCjtc4Ad0ptArg4ABHBoECFdbC9fpIIajZogNo9Ah1RpoiJ2YZwACKDQg8C2qMCMGw+Qe2WeyAATJSigRhnYAMIQHp9I5QaBgkANNoAFWpqRRbQAvpKgA

@EYHN
Copy link
Contributor

EYHN commented May 16, 2018

@u3u
Copy link
Contributor Author

u3u commented May 16, 2018

不过好像加一个空格再次格式化后会自动去掉末尾空格,尴尬
如果空一行的话不确定 vuepress 会不会解析出多余的间距

@u3u
Copy link
Contributor Author

u3u commented May 16, 2018

@EYHN: https://prettier.io/docs/en/options.html#prose-wrap

这个好像没用,你可以在 playground 左侧修改选项试试

@EYHN
Copy link
Contributor

EYHN commented May 16, 2018

懂了

加空格会被去掉所以不能用加空格的方法

@u3u
Copy link
Contributor Author

u3u commented May 16, 2018

@EYHN 是的,貌似只能多空一行了,刚刚试了一下在显示上没有影响

@DerekTso
Copy link
Contributor

@u3u 一个小疑问: 像下图红色框框的那些在最后面的 ",", 应该不需要吧? 加上去反而不太习惯.
这些也是需要符合 eslint 的吗?

image

@u3u
Copy link
Contributor Author

u3u commented May 16, 2018

@DerekTso
这里没有强制要求,不过 eslint 里可以配置这个规则,结尾加上逗号是为了方便添加或删除元素

@EYHN
Copy link
Contributor

EYHN commented May 16, 2018

推荐添加 vscode 推荐插件,eslint , prettier 等
使用 vscode 打开项目会提示安装插件。

https://code.visualstudio.com/docs/editor/extension-gallery#_workspace-recommended-extensions

@EYHN
Copy link
Contributor

EYHN commented May 16, 2018

gitHooks 意义不是很大,只需要在 travis-ci 运行 eslint 即可。
如果出错的 PR 会报错

@DerekTso
Copy link
Contributor

@u3u 以前用 eslint 规则 习惯了最后不加 "," :)

@u3u
Copy link
Contributor Author

u3u commented May 16, 2018

@DIYgod:

  • 有些地方会出现空行
  • 建议不限制 max_line_length,很多地方反而更不直观了
  • ES6 字符串拼接没必要分成多行
  • 属性没必要每个分一行,个人感觉一行更方便看

这些其实都和 printWidth 选项有关,因为一行超过 80 字符(默认)就会换行。但是一行太长了也不太好看,分辨率大一点还好,分辨率小的话就需要拖动横向滚动条了,我不确定这个选项是否可以禁用,文档里没有找到。所以我认为我们应该设置一个更合理的值,或许将它设置为 120?

有些地方的换行确实更不直观了(如果缩进使用 2 个空格或许会好一点),包括 ES6 模版字符串,所以我一般都会在这种地方使用 // prettier-ignore 来忽略格式化当前代码块或行

@u3u
Copy link
Contributor Author

u3u commented May 16, 2018

@EYHN:
gitHooks 意义不是很大,只需要在 travis-ci 运行 eslint 即可。
如果出错的 PR 会报错

gitHooks 主要还是用来在提交的时候格式化代码,保证提交上来的代码风格都是统一的,还是有必要的。
不过在 travis-ci 上运行 eslint 也很有必要,这样可以避免像这里使用未定义变量之类的问题

@u3u
Copy link
Contributor Author

u3u commented May 16, 2018

@DerekTso 这个看个人习惯啦,不同的规范有不同的规则 😂
这个主要问一下 @DIYgod 的看法 🤔

@DIYgod
Copy link
Owner

DIYgod commented May 16, 2018

@u3u 那可以说十分不喜欢 printWidth 这个选项了,不能取消的话不如设为一个非常大的数字吧

@u3u @DerekTso D 最后加逗号其实是很普遍的做法,这样好处是在下面新加属性的时候直接新起一行加就好了,不用修改不相关的其他行

@u3u @EYHN 赞同用 gitHooks,不能保证有所人都有装插件,如果没装的话格式问题还是很容易被忽视的

@DerekTso
Copy link
Contributor

@DIYgod 可以理解。确保每一行都可以独立的添加删除,不影响其它行。
只是,以前配置的 eslint 对这样的格式会报错 对象字面量项尾不能有逗号
现在看改成这样的会有一点不太习惯,不纠结了

@u3u
Copy link
Contributor Author

u3u commented May 16, 2018

@DIYgod 不如设置为 233 吧 2333
我的分辨率是 1920 * 1200,使用 vscode 去除 explorer 和 minimap,写代码的区域最多就 187 列的样子。
应该很少会把代码一行写那么长吧,超过这个长度换行应该也是合理的。
具体情况我还需要测试一下,看看是否达到预期效果。

@u3u
Copy link
Contributor Author

u3u commented May 16, 2018

@DerekTso 习惯就好啦,这样确实会方便很多,不合理的规则可以重写覆盖掉

@u3u
Copy link
Contributor Author

u3u commented May 17, 2018

@DIYgod 重新格式化了一下,现在似乎比较符合预期结果了

@DIYgod DIYgod merged commit 49de384 into DIYgod:master May 17, 2018
@u3u u3u deleted the feat/prettier branch May 18, 2018 01:58
@ikatyang
Copy link

@u3u Sorry, that's a bug in Prettier, opened prettier/prettier#4503 to track this issue, will fix in the next release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants