【问题标题】:How can I make ESLint force imports of .ts files to have a .js extension?如何使 ESLint 强制导入 .ts 文件以具有 .js 扩展名?
【发布时间】:2022-04-02 02:55:33
【问题描述】:

我想从我的 TypeScript 项目中导出 ESM 导入。 TypeScript 不会附加文件扩展名,或将.ts 转换为.js,因此我需要手动将.js 添加到我的所有导入中。我不知道如何设置 ESLint 以要求 .js 扩展以导入 .ts 文件。我的项目太大,无法手动检查所有导入是否最后都有.js,所以我需要 ESLint 来帮我检查。有人知道怎么做吗?

【问题讨论】:

    标签: typescript eslint


    【解决方案1】:

    您可以使用 eslint-plugin-import 插件来强制 eslint 错误,因为导入源中缺少文件扩展名。具体来说,"import/extensions" 规则。

    {
        "rules": {
            "import/extensions": [
                "error",
                "always"
            ]
        }
    }
    

    编辑

    可以通过为它们分配“从不”值来禁止特定扩展。例如,要排除 .ts 扩展,您可以提供以下内容:

    {
        "rules": {
            "import/extensions": [
                "error",
                "always",
                { "ts": "never" }
            ]
        }
    }
    

    或者,如果您想禁止所有扩展除了特定扩展(例如只允许.js),您可以提供以下内容:没关系,这不在所有情况下都有效。

    {
        "rules": {
            "import/extensions": [
                "error",
                "never",
                { "js": "always" }
            ]
        }
    }
    

    【讨论】:

    • 如果我写的是 .ts 而不是 .js,这不会引发错误。
    • @RickyKazuoMiller 我用两种我认为可以解决该问题的方法编辑了答案。
    • 如果我要导入一个名为 file.ts 的文件,代码必须是 import './file.js';。我不认为这个扩展支持。
    猜你喜欢
    • 2020-04-03
    • 2020-02-28
    • 2021-01-08
    • 1970-01-01
    • 2021-02-24
    • 2020-12-27
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多