16
loading...
This website collects cookies to deliver better user experience
.js
e .jsx
importem muitas bibliotecas, componentes, páginas, controllers, services, helpers, estilos, ou seja, uma infinidades de tipos de arquivos e dados distintos.import React, { useState, useEffect } from 'react';
import Button from '~/components/Button';
import { Container } from './styles.js';
import Card from '~/components/Card';
import PropTypes from 'prop-types';
import { combineReducers } from 'redux';
import Main from '~/pages/Main';
import Dashboard from '~/components/Dashboard';
import Home from '~/pages/Home';
import Routes from '~/routes';
function ExampleComponent() { ...
Mas, se podemos deixar mais organizado, por quê não?
import React, { useState, useEffect } from 'react';
import { combineReducers } from 'redux';
import PropTypes from 'prop-types';
import Home from '~/pages/Home';
import Main from '~/pages/Main';
import Button from '~/components/Button';
import Card from '~/components/Card';
import Dashboard from '~/components/Dashboard';
import Routes from '~/routes';
import { Container } from './styles.js';
function ExampleComponent() { ...
~/
ou @
. Por exemplo, ~/components
, ~/pages
, ~/styles
, @controllers
, @models
, entre outros. No post Import paths personalizados e como isso pode te ajudar eu mostro como podemos criar e configurar import paths personalizados para facilitar as importações da nossa aplicação.styled.js
// primeiro, tudo que começa com 'react' e 'redux'
import React, { useState, useEffect } from 'react';
import { combineReducers } from 'redux';
// depois, todos os módulos e bibliotecas importadas
import PropTypes from 'prop-types';
// depois, tudo o que inicia com um alias '~/pages' ou '@pages'
import Home from '~/pages/Home';
import Main from '~/pages/Main';
// depois, tudo o que inicia com um alias '~/components' ou '@components'
import Button from '~/components/Button';
import Card from '~/components/Card';
import Dashboard from '~/components/Dashboard';
// então, as minhas rotas
import Routes from '~/routes';
// e por último, os meus estilos
import { Container } from './styles.js';
function ExampleComponent() { ...
.eslintrc.js
.yarn add -D eslint-plugin-import-helpers
.eslintrc.js
:// .eslintrc.js
rules: {
'import-helpers/order-imports': [
'warn', // exibe um alerta no editor
{
newlinesBetween: 'always', // insere uma linha em branco após cada grupo de prioridade
groups: [
['/^react/', '/^redux/'], // primeiro grupo: tudo que inicia com 'react' e 'redux'
'/styled-components/', // segundo grupo: tudo o que for importado diretamente da biblioteca styled-components. Isso é para garantir que a primeira importação nos arquivos styles.js seja sempre a do styled-components.
'module', // terceiro grupo: tudo que é um módulo (qualquer biblioteca listada no arquivo package.json)
'/prop-types/', // quarto grupo: a importação do prop-types
'/^~/pages/', // quinto grupo: todas as minhas páginas
'/^~/components/', // sexto grupo: todas os meus componentes
['parent', 'sibling', 'index'], // sétimo grupo: qualquer arquivo pai, irmão ou filho do arquivo atual
'/routes/', // oitavo grupo: as minhas rotas
'/^~/', // nono grupo: todos os outros arquivos importados pelo alias configurado
'/styles/', // último grupo: os meus estilos
],
alphabetize: { order: 'asc', ignoreCase: true }, // configura as importações por ordem alfabética (crescente), ignorando maiúsculas e minúsculas
},
],
}