javascript - Cómo poner siempre import type al último con eslint-plugin-import
Tengo un proyecto de React Native en el que uso rutas absolutas que comienzan con components/ features/ o infrastructure/
Quería que estuvieran separados de las importaciones de los módulos del nodo, pero quiero
import type {xxx} from 'features|components|infrastructure|';
siempre ir al final dentro de un grupo, o mejor aún que todo el tipo de importación vaya siempre al final de toda la sección de importaciones y, preferentemente, ordenado alfabéticamente.
Hasta ahora se me ocurrió una configuración así
module.exports = {
root: true,
extends: ['@react-native-community'],
plugins: ['import'],
rules: {
'import/order': [
'error',
{
groups: [
['builtin', 'external'],
'internal',
'parent',
['sibling', 'index'],
'object',
'type',
],
pathGroups: [
{
pattern: '@(react|react-native)',
group: 'external',
position: 'before',
},
{
pattern: 'components/**',
group: 'internal',
},
{
pattern: 'features/**',
group: 'internal',
},
{
pattern: 'infrastructure/**',
group: 'internal',
},
],
pathGroupsExcludedImportTypes: ['react'],
'newlines-between': 'always',
alphabetize: {
order: 'asc',
caseInsensitive: true,
},
},
],
},
};
pero el problema aquí es que no separa import y import type y pone los imports así
import React from 'react';
import { View } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import RegistrationScreen from 'features/account/screens/Registration';
import type { Test } from 'features/account/types';
import { colors } from 'infrastructure/theme';
Gracias.
Respuesta #1
Usa grupos y pon type al final
"import/order": [
"error",
{
groups: ["builtin", "external", "internal", "parent", "sibling", "index", "object", "type"],
},
],
Respuesta #2
Pude lograrlo incluyendo type en la opción pathGroupsExcludedImportTypes. Esto indica al plugin que excluya las importaciones de tipos de los grupos de rutas.
pathGroupsExcludedImportTypes: [
'builtin',
'object',
'type',
],
