当前位置: 首页 > news >正文

import导入顺序杂乱的问题

我们经常会遇到项目中的import语句顺序混乱的问题。这不仅会影响代码的可读性,还可能使我们代码在提交的时候产生不必要的冲突。

解决方案

eslint-plugin-import

开始我调研了一下eslint-plugin-import插件。这款插件的排序逻辑是这样:

  1. builtin: 这代表Node.js内置的模块,例如fspath等。

import fs from 'fs';
  1. external: 这代表外部库或框架,通常是你通过npm或yarn安装的模块。

import axios from 'axios';
  1. internal: 这代表项目内部的模块,但它们通常在项目的不同目录或子目录中。这些模块不是直接的父级或同级模块。

import { someFunction } from '@utils/my-helper';
  1. parent: 这代表从父目录导入的模块。

import something from '../something';
  1. sibling: 这代表与当前文件在同一目录下的其他文件。

import { siblingFunction } from './sibling-module';
  1. index: 这代表从目录的index文件导入的模块。

import { indexFunction } from './';
  1. object: 这代表导入的对象属性,例如:

import('some-module').then(({ someExport }) => ...);
  1. type: 这代表从模块导入的类型或接口(这在TypeScript中特别有用)。

 import type { MyType } from './types';

大致分为这些模块。我们可以在eslint的规则中根据这些模块进行排序。但是这并不是我想要的排序模式,我更希望根据功能进行排序。组件放在一起,hooks放在一起,工具函数放在一起,等等。

eslint-plugin-simple-import-sort

于是我找到了eslint-plugin-simple-import-sort这个插件。使用方式如下:

  1. 安装插件:

npm install --save-dev eslint-plugin-simple-import-sort
  1. 配置 ESLint: 在 .eslintrc.js 或你的 ESLint 配置文件中,添加以下配置:

module.exports = {// ... 其他配置plugins: ['simple-import-sort'],rules: {'simple-import-sort/imports': 'error','simple-import-sort/exports': 'error',},};
  1. 自定义排序:

    'simple-import-sort/imports': ['error',{groups: [[`^vue$`, `^vue-router$`, `^ant-design-vue$`, `^echarts$`], // 你可以根据需要添加更多的内置模块[`.*\\.vue$`], // .vue 文件[`.*/assets/.*`, `^@/assets$`],[`.*/config/.*`, `^@/config$`],[`.*/hooks/.*`, `^@/hooks$`],[`.*/plugins/.*`, `^@/plugins$`],[`.*/router/.*`, `^@/router$`],[`^@/services$`, `^@/services/.*`],[`.*/store/.*`, `^@/store$`],[`.*/utils/.*`, `^@/utils$`],[`^`],[`^type `],],},],
http://www.lryc.cn/news/205368.html

相关文章:

  • Hadoop3教程(二十六):(生产调优篇)NameNode核心参数配置与回收站的启用
  • PaddleX场景实战:PP-TS在电压预测场景上的应用
  • pdf误删恢复如何恢复?分享4种恢复方法!
  • 简析新能源汽车充电桩设计与应用
  • Java零基础入门-算术运算符
  • java实现hbase数据导出
  • Unity之ShaderGraph如何实现旋涡效果
  • 【分布式】: 幂等性和实现方式
  • idea 设置serlvet 类模板(快捷生成servlet类)
  • SpringBoot自动配置原理解析 | 京东物流技术团队
  • AOP 笔记
  • 微信小程序导航退回及跳转 传参(navigateBack,navigateTo)
  • python实例代码介绍python基础知识
  • 【每日一题】掷骰子等于目标和的方法数
  • 霸王条款惹品牌争议,京东双11站在商家对立面?
  • 深度神经网络为何成功?其中的过程、思想和关键主张选择
  • 什么是服务器节点?
  • 水电站与数据可视化:洞察未来能源趋势的窗口
  • Mac运行Docker报错
  • 代码 $(“.btn“).click(function(){ 和代码 $(document).ready(function() 有啥区别?
  • 【nodejs脚本】为文件夹中的所有node项目执行命令 npm install 并收集error日志
  • 非父子组件通信-发布订阅模式
  • iPhone手机分辨率整理
  • 【linux】SourceForge 开源软件开发平台和仓库
  • LabVIEW应用开发——控件的使用(四)
  • MySQL - mvcc
  • SpringMVC 异常处理器
  • 迷你洗衣机哪个牌子好又实惠?内裤洗衣机热销前四榜单
  • SOCKS5代理与网络安全:如何安全地进行爬虫操作
  • onebound电商API接口商品数据采集平台:让数据成为生产力!