如何在 React 项目中对导入进行排序

如何在 React 项目中对导入进行排序

Eslint 和 Prettier 都有插件可以做到这一点

Photo by 安德烈·泰辛 on 不飞溅

前言

最近遇到了一个很奇怪的style bug。在一个SPA项目中,如果先访问A页面,再访问B页面,就会出现页面样式问题。如果直接访问页面B,效果很好。这个bug花了我很多时间来修复,但是bug的原因很简单。 pageA 和 pageB 都导入了一些相同的组件并覆盖了样式,但是它们的顺序不同导致样式被覆盖。有一些演示代码:

 //页面A  
 导入“./styleA.css”; // 覆盖 componentA 和 componentB 样式  
 从“组件/a”导入 CompA;  
 从“组件/b”导入 CompB; //页面B  
 从“组件/a”导入 CompA;  
 从“组件/b”导入 CompB;  
 导入“./styleB.css”; // 覆盖 componentA 和 componentB 样式

pageA 自定义样式的优先级高于 pageB 自定义样式。

他们可能有很多方法来修复错误,例如使用作用域 css、命名空间等。但我发现最简单的方法是对导入进行排序。

在本文中,我们可以学习两种对导入进行排序的方法:

  1. 更漂亮
  2. 埃斯林特

我正在使用 VS Code 开发一个反应项目。我已经安装了VS Code的prettier和eslint插件,项目中不会单独安装。

使用 Prettier 对导入进行排序

prettier 不支持这个功能,有一个很棒的插件可以用来对导入进行排序—— GitHub — trivago/prettier-plugin-sort-imports .

首先,让我们安装它:

 npm install --save-dev @trivago/prettier-plugin-sort-imports // 或者使用纱线  
 yarn add --dev @trivago/prettier-plugin-sort-imports

然后,我们开始为这个插件配置我们的规则。该插件非常灵活,并且有一些 api 可以帮助我们自定义订单。

在我的项目中,我使用 进口订单 自定义进口顺序,以及 导入订单分离 分开不同的部分:

 // .prettierrc.json  
 {  
 "importOrder": ["^react(.*)", "antd/(.*)", "<THIRD_PARTY_MODULES> ", "@/(.*)", "^[./]"],  
 “importOrderSeparation”:真  
 }

导入将按以下顺序:

  1. 反应,反应域,反应路由器
  2. antd(用户界面库)
  3. 包/第三方导入,例如 lodash。
  4. 项目别名导入
  5. 相对进口

这条规则的效果会是这样的:

保存文件时将自动使用 prettier 对其进行格式化,因此将自动对导入进行排序。

使用 Eslint 对导入进行排序

Eslint 有许多用于排序导入的插件,例如 eslint 插件简单导入排序 , eslint 插件导入 , 排序导入 .我更喜欢使用 eslint 插件简单导入排序 这更容易,并且只是配置组的一种选择。在接下来的内容中,我们将学习如何使用它。

首先,让我们在项目中安装依赖项:

 npm install --save-dev eslint-plugin-simple-import-sort // 或者使用纱线  
 纱线添加 eslint-plugin-simple-import-sort -D

然后,我们开始为这个插件配置我们的规则:

 // .eslintrc.js  
 模块.exports = {  
 //...  
 插件:[“简单导入排序”],  
 规则:{  
 “简单导入排序/导入”:“错误”,  
 //如果我们想对导入进行分组,可以在下面使用。  
 “简单导入排序/导入”:[“错误”,{  
 组:[  
 [“^反应”],  
 ["^antd"],  
 ["^@?\\w"],  
 ["@/(.*)"],  
 ["^[./]"]  
 ]  
 }]  
 }  
 }

除了行之间的分隔符之外,这将产生与更漂亮的效果相同的效果:

结论

在本文中,我们将学习如何使用更漂亮的 eslint 对导入进行排序。推荐使用 prettier 方式,因为 prettier 会自动格式化半、空格等代码样式。这两种方式都可以帮助我们编写更干净、更易读、更健壮的代码,这对 CSS 规则覆盖尤其有用。

感谢阅读,希望这篇文章能帮到你,期待你 下列的 我学习更多实用技巧以成为更好的开发人员。

升级编码

感谢您成为我们社区的一员!你走之前:

将像您这样的开发人员安置在顶级初创公司和科技公司

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/38846/32272311

posted @ 2022-09-23 11:33  哈哈哈来了啊啊啊  阅读(991)  评论(0编辑  收藏  举报