繁体   English   中英

Eslint 规则/Vscode 设置防止导入没有索引的文件夹

[英]Eslint rule/Vscode setting to prevent importing folders without index

题:

是否有 ESLint 规则来强制在导入时使用*/index

例子:

文件结构:

utils/
   - index.js
   - a.js
   - b.js

main.js

主文件

// WRONG
import utils from "./utils";

// OK 
import utils from "./utils/index";

为什么

我需要这个,因为我的项目在打字稿编译后使用tscpaths用相对路径替换绝对路径,但是由于某种原因,当*/index不存在时它不会替换。

选择

如果规则不存在,是否有 vscode 设置会自动在自动导入中添加index

选项 1,重组您的项目,以便没有要导入的index.js

选项 2,如果存在此问题的文件夹不多,您可以为no-internal-imports规则编写配置,以便按名称导入文件夹被视为“内部引用”。 这可能是最糟糕的解决方案,因为没有自动修复,添加新文件夹需要更新 eslint 配置,但这可能有助于提及作为一个选项

选项 3,创建执行此操作的no-useless-path-segments规则的修改版本,它当前具有与您想要的相反的逻辑,因此您将修改第 95-108 行附近的代码以检查导入是否不是索引导入但解决了一个建议修复:

// assuming your rule has an option called enforceIndex
if (options && options.enforceIndex && !regexUnnecessaryIndex.test(importPath)) {
    // if the import path is not pointing to an index file check if it resolves to a path that looks like an index file
    const resolved_path = resolve(importPath, context);
    if(regexUnnecessaryIndex.test(resolved_path)){
        // if the resolved_path resolves to something that looks like an index then suggest adding /index
        return reportWithProposedPath(`${importPath}/index`);
    }
}

可能会联系该 eslint 包的团队并询问他们是否愿意添加对该逻辑的支持,因为它可能会出现在其他人身上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM