- The
importOrderBuiltinModulesToTop
option has been removed, and node.js built in modules are sorted to the top by default. The position can be controled using the new<BUILTIN_MODULES>
keyword inimportOrder
. - The
importOrderSeparation
option has been removed. Use empty quotes in yourimportOrder
to control the placement of blank lines. - The
importOrderCaseInsensitive
option has been removed, and imports will always be sorted case-insensitive. - The
importOrderGroupNamespaceSpecifiers
option has been removed. - The
importOrderSortSpecifiers
option has been removed, and specifiers are now always sorted (previoustrue
setting) - The
importOrderMergeDuplicateImports
option has been removed, and imports are always combined (previoustrue
setting) - The
importOrderCombineTypeAndValueImports
option has been removed. See below for details - Added
importOrderTypeScriptVersion
option. - The default
importOrder
was improved. It now sorts node.js built-ins, then non-relative imports, then relative imports. If you have animportOrder
specified, this will not affect you.
This option was removed to simplify the configuration of the plugin. But if you like to separate your import groups with newlines, you can do so by adding ""
groups to your importOrder
array.
For example:
"importOrder": [
"", // If you want a gap at the top after top-of-file-comments, put a separator here!
"<BUILTIN_MODULES>",
"",
"<THIRD_PARTY_MODULES>",
"",
"^@app/(.*)$",
"",
"^[./]"
]
Or, if you would like to keep all imports together, but add a newline before side-effect imports:
"importOrder": [
"<THIRD_PARTY_MODULES>",
"^@app/(.*)$",
"^[./]"
"", // This will add a newline between side-effect groups (i.e. the chunks that are sorted)
]
Combining type and value imports is supported in Flow and TypeScript 4.5.0 and above. To simplify the configuration of the plugin, the explicit setting has been removed. Instead, we will always enable combining these imports when using Flow and have introduced a new option, importOrderTypeScriptVersion
to control whether or not merging can happen when using TypeScript.
Some import statement syntax can only be used in certain versions of TypeScript. In order to enable these features, such as merging type and value imports, you can specify the version of TypeScript that you're using in your project using this option, which should be a valid semver string.
- Replace
experimentalBabelParserPluginsList
with the newimportOrderParserPlugins
in your prettier config. - Use the
importOrderSortSpecifiers
to sort import specifiers. - Use
<THIRD_PARTY_MODULES>
special word inimportOrder
to place your third party imports at any location. - Disable case sensitivity in the soring via
importOrderCaseInsensitive
option. - Use
importOrderSeparation
to separate the import groups.
- Sort the import specifiers:
The plugin is now able to sort the import specifiers in an import declaration.
This can be achieved by setting up the
importOrderSortSpecifiers
boolean flag. See usage
Input:
import { a, d, c, b } from 'some-package'
Output:
import { a, b, c, d } from 'some-package'
- Place third party modules anywhere in the imports: You can place the third party import at the desired place in import order. See usage
Prettier config:
module.exports = {
"importOrder": ["^@core/(.*)$", "<THIRD_PARTY_MODULES>", "^@ui/(.*)$", "^[./]"]
}
Input:
import threeLevelRelativePath from '../../../threeLevelRelativePath';
import sameLevelRelativePath from './sameLevelRelativePath';
import thirdPartyTwo from 'third-party-2';
import otherthing from '@core/otherthing';
import thirdPartyOne from 'third-party-1';
import twoLevelRelativePath from '../../twoLevelRelativePath';
import component from '@ui/hello';
import thirdPartyThree from 'third-party-3';
Output:
import otherthing from '@core/otherthing';
import thirdPartyOne from 'third-party-1';
import thirdPartyTwo from 'third-party-2';
import thirdPartyThree from 'third-party-3';
import component from '@ui/hello';
import threeLevelRelativePath from '../../../threeLevelRelativePath';
import twoLevelRelativePath from '../../twoLevelRelativePath';
import sameLevelRelativePath from './sameLevelRelativePath';
-
Disable case sensitivity for sorting: By default, the case sensitivity for the sorting is enabled. Now you can disable the case sensitivity with the
importOrderCaseInsensitive
option. See usage -
Pass options to the Babel parser plugins: You can pass the options to the babel parser plugins via the
importOrderParserPlugins
option. See usage
- Renaming of
experimentalBabelParserPluginsList
: In version 3, theexperimentalBabelParserPluginsList
has been removed. You can use the same API with a new name and better option handling for babel parser. See usage