directives_ordering 린트 규칙
directives_ordering 린트 규칙
Effective Dart 가이드가 권장하는 import 정렬 규칙을 따르도록 도와주는 린트 규칙이에요.
본문
Effective Dart 가이드의 지시어(directive) 정렬 규칙을 따르는 게 좋아요.
dart: import를 다른 import보다 앞에 두세요
나쁜 예
import 'package:bar/bar.dart';
import 'package:foo/foo.dart';
import 'dart:async'; // LINT
import 'dart:html'; // LINT
dart: import가 뒤쪽에 섞여 있죠. 이렇게 하면 린트가 잡아내요.
import 'dart:html'; // OK
import 'package:bar/bar.dart';
import 'dart:async'; // LINT
import 'package:foo/foo.dart';
매우 헷갈리는 예시인데, dart:html이 앞에 나오긴 했지만 dart:async가 package: 사이에 끼어 있어요. dart: 끼리는 앞쪽에, package:는 뒤쪽에 모아야 해요.
좋은 예
import 'dart:async'; // OK
import 'dart:html'; // OK
import 'package:bar/bar.dart';
import 'package:foo/foo.dart';
dart: import를 맨 앞에, 그다음 package: import를 순서대로 배치했어요.
package: import를 상대(relative) import보다 앞에 두세요
나쁜 예
import 'a.dart';
import 'b.dart';
import 'package:bar/bar.dart'; // LINT
import 'package:foo/foo.dart'; // LINT
상대 import인 a.dart, b.dart가 앞에 있고 package: import가 뒤에 있네요.
import 'package:bar/bar.dart'; // OK
import 'a.dart';
import 'package:foo/foo.dart'; // LINT
import 'b.dart';
앞엔 package:가, 뒤엔 dart: 없이 상대 import가 섞여 있어요. package:와 상대 import가 뒤섞여 있죠.
좋은 예
import 'package:bar/bar.dart'; // OK
import 'package:foo/foo.dart'; // OK
import 'a.dart';
import 'b.dart';
package: import를 먼저, 상대 import를 나중에 배치했어요.
export는 모든 import 다음의 별도 섹션에 두세요
나쁜 예
import 'src/error.dart';
export 'src/error.dart'; // LINT
import 'src/string_source.dart';
export가 import 사이에 끼어 있네요.
좋은 예
import 'src/error.dart';
import 'src/string_source.dart';
export 'src/error.dart'; // OK
import를 모두 모은 뒤에 export를 별도 섹션으로 배치했어요.
섹션 안에서 알파벳 순으로 정렬하세요
나쁜 예
import 'package:foo/bar.dart'; // OK
import 'package:bar/bar.dart'; // LINT
import 'a/b.dart'; // OK
import 'a.dart'; // LINT
package:foo가 package:bar보다 앞에 있고, a/b.dart가 a.dart보다 앞에 와서 정렬 순서가 어긋났어요.
좋은 예
import 'package:bar/bar.dart'; // OK
import 'package:foo/bar.dart'; // OK
import 'a.dart'; // OK
import 'a/b.dart'; // OK
package: 섹션과 상대 import 섹션 모두 알파벳 순으로 정렬했어요.
활성화 방법
이 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 directives_ordering을 추가하면 돼요.
linter:
rules:
- directives_ordering
linter > rules를 YAML map 문법으로 작성한다면 directives_ordering: true처럼 불리언 값을 지정해도 되고요.
linter:
rules:
directives_ordering: true
더 알아보기
import 정렬에 대한 더 자세한 규칙은 Effective Dart 스타일 가이드의 지시어(ordering) 항목에서 확인할 수 있어요. 린트 규칙 전체 목록은 공식 Linter rules 문서에서 확인할 수 있어요.