TSLint: заказанная конфигурация импорта - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь настроить правило TSLint ordered-imports, чтобы порядок импорта выглядел следующим образом:

// React
import React from 'react';
import { View } from 'react-native';

// Libs
import * as _ from 'lodash';
import * as moment from 'moment';

// Internal libs
import Bar from '@app/bar';
import Foo from '@app/foo';

// Relative paths
import { Element } from './my-element';
import MyFunction from './my-function';

Это правило, которое я пытался создать, но до сих пор не могу добраться до точки, где работает выше.

Кажется, я не могу сопоставить с абсолютным импортом, отличным от react, я пытался использовать null, а также не реагирующее сопоставление, например ^!react, но оно не работает.

Это мои правила

{
  "ordered-imports": [
      true,
      {
        "module-source-path": "full",
        "grouped-imports": true,
        "groups": [
          {
            "name": "react",
            "match": "^react",
            "order": 1
          },
          {
            "name": "node_modules",
            "match": null,
            "order": 2
          },
          {
            "name": "internal modules",
            "match": "^@app",
            "order": 3
          },
          {
            "name": "relative dir",
            "match": "^[.]",
            "order": 4
          }
        ]
      }
    ]
}

Может кто-нибудь помочь мне понять, что я делаю неправильно?

Спасибо

1 Ответ

0 голосов
/ 15 июня 2019

Это у вас работает?

{
  "rules": {
    "ordered-imports": [
      true,
      {
        "module-source-path": "full",
        "grouped-imports": true,
        "groups": [
          {
            "name": "react",
            "match": "^react.*",
            "order": 1
          },
          {
            "name": "internal modules",
            "match": "^@app.*",
            "order": 3
          },
          {
            "name": "relative dir",
            "match": "^[.].*",
            "order": 4
          },
          {
            "name": "node_modules",
            "match": ".*",
            "order": 2
          }
        ]
      }
    ]
  }
}

Два изменения:

  • Переместил «нулевое» сопоставление в конец списка, поэтому оно всегда сопоставляется, только если нет других
  • Добавлен .* в конец всех матчей. ?♂️
...