Closed
Description
We're using the import/order
rule to enforce a convention in module imports. Here's how the import/order
rule is currently configured in our project.
// in .eslintrc.js
module.exports = {
rules: {
'import/order': ['error', {
groups: ['builtin', 'external', 'internal'],
'newlines-between': 'always',
alphabetize: {
order: 'asc',
caseInsensitive: true,
},
}],
}
This will result in the following import conventions:
// in a module with a React component
// "external" modules are imported first
import { Button } from 'antd'
import PropTypes from 'prop-types'
import React from 'react'
// "internal" modules are imported second
import { BrandedIcon1 } from 'components/BrandedIcon1'
import { BrandedIcon2 } from 'components/BrandedIcon2'
All is well and good, except that our team's convention is to import React
first when a module has React components. Therefore, the example above would become:
import React from 'react' // force React to be imported first in the "external" group
import { Button } from 'antd'
import PropTypes from 'prop-types'
import { BrandedIcon1 } from 'components/BrandedIcon1'
import { BrandedIcon2 } from 'components/BrandedIcon2'
Is it possible to achieve this desired sort order using the import/order
rule? I was a bit confused by the documentation of the pathGroups
and pathGroupsExcludedImportTypes
and I wasn't sure if these options could be used to achieve this result. Thanks in advance for the help and keep up the great work on this plugin!