import导入顺序杂乱的问题

news/2024/6/19 4:54:06 标签: 1024程序员节, vue.js

我们经常会遇到项目中的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.niftyadmin.cn/n/5119202.html

相关文章

git:删除上一次 commit 中的某个文件,并重新提交

1. 首先,使用以下命令删除要移除的文件: git rm 文件路径将 “文件路径” 替换为要删除的文件的实际路径。这将从 Git 仓库中删除该文件,并将其放入暂存区。git rm 相当于 linux rm git add 命令。 2. 使用以下命令修改上一次的提交&#…

flask连接sqllite,并进行一些基本的增删改查操作

flask连接sqllite,并进行一些基本的增删改查操作 😇博主简介:我是一名正在攻读研究生学位的人工智能专业学生,我可以为计算机、人工智能相关本科生和研究生提供排忧解惑的服务。如果您有任何问题或困惑,欢迎随时来交流…

C/C++新冠疫情死亡率 2020年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C新冠疫情死亡率 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C新冠疫情死亡率 2020年9月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 2020年全世界爆发了新冠疫情,请…

volatile 关键字有什么用?它的实现原理是什么?

volatile volatile是Java中的一个关键字,用于修饰变量,表示该变量是“易变的”(Volatile)。 volatile 关键字有两个作用: 可以保证在多线程环境下共享变量的可见性。 通过增加内存屏障防止多个指令之间的重排序。 可见…

Kubernetes技术与架构-存储 1

Kubernetes集群Pod中运行的容器实例绑定的资源包括计算、内存、网络以及存储,本文主要描述Kubernetes存储体系的使用方式,Kubernetes存储对象需要解决的问题主要包括在Pod重启过程中原始数据不会丢失、运行在Pod中多个容器实例可以共享地使用存储对象。 …

FoneDog iOS Unlocker(ios解锁工具) 适用macos电脑

FoneDog iOS Unlocker是一款专业的iOS设备解锁工具,旨在帮助用户解决iOS设备上的解锁问题。该软件支持解锁各种锁定类型,如数字密码锁、手势密码锁、Touch ID和Face ID等,可以解除iPhone、iPad和iPod Touch等设备的锁定状态。FoneDog iOS Unl…

BootLoader为什么要分阶段?

BootLoader(引导加载程序)分阶段的设计主要是为了实现系统的启动和引导过程的可靠性、可维护性和灵活性。这种分阶段的设计允许引导加载程序执行不同的任务,并在不同的环境下工作。以下是引导加载程序分阶段的主要原因: 1. 启动环…

EasyExcel使用方式(包含导出图片)

1、导EasyExcel依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</version> </dependency> 2、创建导出excel的实体类 Getter Setter EqualsAndHashCode HeadStyle(fillF…