import-js / eslint-plugin-import

ESLint plugin with rules that help validate proper imports.
MIT License
5.57k stars 1.57k forks source link

Require/first rule ? #3026

Open edi9999 opened 4 months ago

edi9999 commented 4 months ago

Hello,

I have following code :

const Docxtemplater = require("docxtemplater");
const {
    xml2str,
    str2xml,
    traits,
    chunkBy,
    isParagraphStart,
    isParagraphEnd,
    isContent,
} = require("docxtemplater").DocUtils;
const { ensureDirectChild, dropTags } = require("./xml-utils.js");

const createScope = require("docxtemplater/js/scope-manager.js");
const normalizePath = require("./normalize-path.js");

const ELEMENT_NODE = 1;

function getExtension(path) {
    return path.replace(/[^.]+\.([^.]+)/, "$1");
}

const Pizzip = require("pizzip");

I wanted to fix it by placing all require before other code, however, when I used the "import/first" rule, it didn't seem to apply to the require calls.

Do you have any other rules or would you be open to have the import/first rule also apply to require ?

Best,

Edgar

ljharb commented 4 months ago

The usual reason to have imports first is that they’re hoisted there anyways - it’s not meant to be a style choice.

That said, i think it’d be reasonable to add an option that allows it to apply to top-level requires also.