作者:热心市民王某
https://juejin.cn/post/7281474941257220152
我们经常会遇到项目中的import
语句顺序混乱的问题。这不仅会影响代码的可读性,还可能使我们代码在提交的时候产生不必要的冲突。
开始我调研了一下eslint-plugin-import插件。这款插件的排序逻辑是这样:
fs
、path
等。import fs from 'fs';
import axios from 'axios';
import { someFunction } from '@utils/my-helper';
import something from '../something';
import { siblingFunction } from './sibling-module';
index
文件导入的模块。import { indexFunction } from './';
import('some-module').then(({ someExport }) => ...);
import type { MyType } from './types';
大致分为这些模块。我们可以在eslint的规则中根据这些模块进行排序。但是这并不是我想要的排序模式,我更希望根据功能进行排序。组件放在一起,hooks放在一起,工具函数放在一起,等等。
于是我找到了eslint-plugin-simple-import-sort这个插件。使用方式如下:
npm install --save-dev eslint-plugin-simple-import-sort
.eslintrc.js
或你的 ESLint 配置文件中,添加以下配置:module.exports = {
// ... 其他配置
plugins: ['simple-import-sort'],
rules: {
'simple-import-sort/imports': 'error',
'simple-import-sort/exports': 'error',
},
};
'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 `],
],
},
],
这样就会按照我们系统中的功能模块排序了!
推荐阅读 点击标题可跳转