欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

react-cli

程序员文章站 2022-03-22 12:56:10
更新日志: v1.2.0 ...未完待续 v1.1.0 添加 "editorconfig" 配置 "ESLint" 集成 "prettier" 集成 "lint staged" 实现细节: 添加 "editorconfig" editorconfig 帮助我们约束多个开发者在同一个项目中代码风格,更 ......

react-cli
react-cli
react-cli

更新日志:

v1.2.0

...未完待续

v1.1.0

  • 添加
  • 配置eslint
  • 集成
  • 集成

实现细节:

添加

editorconfig 帮助我们约束多个开发者在同一个项目中代码风格,更重要的是它是跨编辑器,ide 的。

# http://editorconfig.org
# 这是根文件,不用继续往上查找
root = true

# 匹配全部文件
[*]
# 缩进风格,可选"space"、"tab"
indent_style = space
# 缩进的空格树 2
indent_size = 2
# 结尾换行符,可选"if"、"or"、"orif"
end_of_line = lf
# 设置字符集
charset = utf-8
# 删除一行中的前后空格
trim_trailing_whitespace = true
# 在文件结尾插入新行
insert_final_newline = true

配置eslint

eslint 可以约束团队成员的代码风格,并且找出一些容易产生问题的代码。vscode 中安装 eslint 后可以在 问题 面板中看到 eslint 提示的各种错误。eslint 自带的 autofix 也挺好用的。

create-react-app 默认集成了eslint, 要让编辑器正确提示eslint错误,需要在项目根目录添加 .eslintrc.js:

/**
 * create-react-app默认集成了eslint, 此配置让编辑器正确提示eslint错误
 */
module.exports = {
  extends: ['react-app'],
};

并且将package.json的配置移除

-  "eslintconfig": {
-    "extends": "react-app"
-  },

为了让vscode的eslint插件启用typescript支持,需要添加下面的配置到项目文件夹中 文件->首选项-> 设置-> 项目文件夹。或者你也可以专门去保存工作区,添加这些配置到工作区中。

{
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    { "language": "typescript", "autofix": true },
    { "language": "typescriptreact", "autofix": true }
  ]
}

集成

你进一步编辑 .eslintrc.js 文件,这些更改也 只会影响编辑器集成。它们不会影响终端和浏览器中的 lint 输出。这是因为 create react app 有意提供了一组最常见的错误规则。

如果要为项目强制执行编码风格,就需要考虑使用 prettier 而不是 eslint 样式规则。

/**
 * https://prettier.io/docs/en/options.html:请确保先执行了 npm i -d prettier
 * 项目代码风格优先级
 * 1. .perttierc.js
 * 2. .editorconfig
 * 3. vscode中的设置
 */
module.exports = {
  // 指定打印机将换行的行长度。默认 80
  printwidth: 100,
  // 指定每个缩进级别的空格数。默认 2
  // tabwidth: 2,
  // 指定使用制表符缩进行。 默认 false
  // usetabs: false,
  // 在语句末尾打印分号。默认 true
  // semi: true,
  // 使用单引号而不是双引号。默认 false
  singlequote: true,
  // 引用对象中的属性时更改:默认 as-needed-仅在需要时在对象属性周围添加引号。可选"consistent" - 如果对象中至少有一个属性需要引号,则引用所有属性。"preserve" - 尊重对象属性中引号的输入用法。
  // quoteprops: 'as-needed',
  // 在jsx中使用单引号。默认 false
  jsxsinglequote: true,
  // 多行时尽可能打印尾随逗号。默认 none-没有尾随逗号。可选:es5:在es5中有效的尾随逗号(对象、数组等)。例如本文件,设置成 es5,就算你最后一个属性-属性值没有加逗号,也会帮你自动加上逗号
  trailingcomma: 'es5',
  // 在对象文字中打印括号之间的空格。默认 true
  // bracketspacing: true,
  // 将>多行jsx元素放在最后一行的末尾,而不是单独放在下一行(不适用于自闭元素)。默认false
  // jsxbracketsameline: false,
  // 在单个箭头函数参数周围加上括号。默认 avoid-尽可能的省略parens。例 x => x。可选 "always"-使用包括parens。例 (x) => x
  arrowparens: 'avoid',
  // 指定格式化文件的开始行。默认 0
  // rangestart: 0,
  // 指定格式化文件的结束行。默认 infinity
  // rangeend: infinity
  // 指定要使用的解析器。prettier会自动从输入文件路径中推断出解析器。因此不必更改此设置。默认 babylon
  // parser: 'babylon'
  // 指定用于推断要使用的解析器的文件名
  // filepath: ''
  // 需要编译指示。默认 false
  // requirepragma: false
  // 插入pragma。默认 false
  // insertpragma: false
  // 散文包裹。默认 preserve-按原样包装散文。可选,always-如果超过打印宽度就包装。never-不要包装
  // prosewrap: 'preserve'
  // html空白灵敏度 默认 css-尊重css display属性的默认值。可选:strict-空格被认为是敏感的,ignore-空格被认为是不敏感的
  // htmlwhitespacesensitivity: 'css',
  // 行结尾:默认 auto-维护现有的行结尾,可选 lf-(\n),在linux和macos以及git repos 内部很常见 crlf-回车符+换行符(\r\n), 在windows上很常见 cr-仅限回车符,很少使用
  // endofline: 'auto',
};

集成

前面虽然是在自己的电脑自己的编辑器里添加了一些配置,当自己保存时就可以自动格式化自己写的代码。我但是我们并不能强求别人也用vscode来编码,可能别人用习惯了webstorm等。这时候为了继续维持项目统一的风格,最好是在react-cli脚手架工具中直接体现,而尽可能少的让别人需要去做别的编辑器配置。

这一小节做的就是让大家在git commit的时候自动触发prettier格式化代码的命令。

npm i -d husky lint-staged

接下来配置 husky 和 lint-staged。在package.json中加入下面内容。

"husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "src/**/*.{js,jsx,ts,tsx,json,css,scss,md}": [
      "prettier --single-quote --write",
      "git add"
    ]
  },

v1.0.0

实现细节:

npm 设为淘宝源

npm config set registry https://registry.npm.taobao.org