ESLint 按包名排序导入

Posted

技术标签:

【中文标题】ESLint 按包名排序导入【英文标题】:ESLint sort imports by package name 【发布时间】:2021-12-15 09:31:42 【问题描述】:

我正在尝试按包名称对我的导入进行排序,但根据文档中可用的内容,它似乎不受支持。

有没有办法让它工作?

import  NgModule  from '@angular/core';
import  BrowserModule  from '@angular/platform-browser';

上面的代码失败了,因为它希望 BrowserModule 位于第一行。但我希望这被认为是正确的,因为我想按包名称订购。

这是我的 ESLint 配置。

"sort-imports": [
            "error",
            
                "ignoreCase": true,
                "ignoreDeclarationSort": false,
                "ignoreMemberSort": false,
                "memberSyntaxSortOrder": [
                        "none",
                        "all",
                        "multiple",
                        "single"
                ],
                "allowSeparatedGroups": true
            
        ],

【问题讨论】:

【参考方案1】:

基本 ESLint 规则不支持它 - 它按名称排序。

您可以使用与此处相同的不同排序规则。

https://www.npmjs.com/package/eslint-plugin-simple-import-sort

【讨论】:

【参考方案2】:

我正在使用eslint-plugin-import,它支持这样的功能。发布我的配置以供参考。它将强制 React 导入总是首先,然后是以 @my_org 开头的导入,然后根据组的顺序配置其余部分

"import/order": [
      "error",
      
        "alphabetize": 
          caseInsensitive: true,
          order: "asc",
        ,
        "groups": ["external", "builtin", "parent", ["sibling", "index"]],
        "newlines-between": "never",
        "pathGroups": [
          
            group: "external",
            pattern: "react",
            position: "before",
          ,
          
            group: "external",
            pattern: "@my_org/**",
            position: "after",
          ,
        ],
        "pathGroupsExcludedImportTypes": ["builtin"],
      ,
    ],

【讨论】:

以上是关于ESLint 按包名排序导入的主要内容,如果未能解决你的问题,请参考以下文章

模块构建失败 - 导入后未找到 ESLint 配置

如何让 eslint 导入/首先了解我的 webpack 别名?

未找到规则“导入/扩展”的 ESLint 定义

webpack中的eslint导入:无法解析模块的路径

要求语句不是导入语句的一部分。eslint@typescript-eslint/no-var-需要从存储中导入打字稿

解析错误关键字导入被保留(SublimeLinter-contrib-eslint)