web-dev-qa-db-fra.com

Règle Eslint pour mettre une nouvelle ligne dans l'importation

La règle que je recherche doit afficher une erreur dans ce cas:

import {MY_CONSTANT1, MY_CONSTANT2, MY_CONSTANT3}

Et considéré comme très bien dans ce cas:

import {
   MY_CONSTANT1, 
   MY_CONSTANT2, 
   MY_CONSTANT3
}

Existe-t-il une telle règle de réduction?

6
Anna

Je cherchais la solution et je n'ai malheureusement trouvé que votre question. J'ai décidé d'en apprendre un peu plus sur le fonctionnement d'eslint et comment écrire vos propres plugins et créer le mien. Si vous connaissez l'analyse de la structure du nœud AST, il est vraiment facile de travailler avec. Voici le fichier principal du plugin. La correction automatique est plus délicate cependant, donc je ne l'inclue pas car elle est biaisée vers mon formatage normes.

module.exports = {
  rules: {
    'single-import-per-line': {
      create (context) {
        return {
          ImportDeclaration(node) {
            if (node.specifiers.length < 2) {
              return;
            }

            let previousImport = node.specifiers[0];
            for (let i = 1; i < node.specifiers.length; i++) {
              const currentImport = node.specifiers[i];

              // Omit the first condition if you want to put default imports on a new line as well
              if (previousImport.type !== 'ImportDefaultSpecifier'
                && currentImport.loc.start.line === previousImport.loc.end.line
              ) {
                context.report({ node, message: 'Your message' });
                return;
              }

              previousImport = currentImport;
            }
          },
        };
      },
    },
  },
};
1
Radoslav Karlík

Je cherchais une telle règle pour la déclaration d'importation et d'exportation. En conséquence, j'ai fait un plugin avec autofix.

Le plugin transforme donc le code

import { k1, k2 } from 'something'

dans

import {
  k1,
  k2
} from 'something'

et code

export { name1, name2, nameN }

dans

export {
  name1,
  name2,
  nameN
}
1
Anton Antonov

Vous devriez peut-être utiliser des espaces à l'intérieur des accolades pour éviter une telle erreur

import { MY_CONSTANT1, MY_CONSTANT2, MY_CONSTANT2 }

Vous pouvez lire à propos de object-curly-spacing rule.

0
Сергей

tu peux essayer ça

"semicolon": [true, "always"]
0
Arvind