tslint를 사용하여 Typescript 프로젝트에서 패키지와 폴더 사이의 잘못된 가져 오기를 확인하십시오.
패키지 아키텍처의 자동 검증 및 문서 ( tslint-folders-diagrams 통해).
TSLINT-Folders는 CI 빌드 및 최소한 하나의 주요 제품을 위해 CI 빌드 및 Dev Box (Linux, Mac, Windows)에서 매일 안정적이며 사용됩니다.
수동으로 소비 된 시간을 수동 코드 코드 검토와 같은 실수로 검토하십시오.
file-name-casing 하면 1 스타일 만 허용합니다) 우리는 버전 관리에 Semver를 사용합니다. 사용 가능한 버전은 릴리스를 참조하십시오.
yarn add tslint-folders
tslint.json 을 편집하여 tslint-folders를 가리키는 "rulesDirectory" 항목을 가지고 있습니다.
일반적으로 이것은 다음과 같습니다.
"rulesDirectory": "./node_modules/tslint-folders/dist/lib/"
예를 들어 Tslint.tslint-folders.json을 참조하십시오.
tslint 규칙은 tslint.json 에서 활성화되고 구성됩니다.
tsf-folders-imports-between-packages 아래의 섹션을 참조하십시오.
선택적으로 tslint-folders 구성을 tslint.tslint-folders.json 과 같은 별도의 파일로 나눌 수 있습니다. 파일을 참조하려면이 코드를 tslint.json 에 추가하십시오.
"extends": "./tslint.tslint-folders.json"
TSLINT가 이미 제자리에 있다고 가정하면 이제 TSLINT에 의해 예기치 않은 수입 (또는 비활성화 된 테스트)이 플래그를 지정해야합니다. 이것은 명령 줄에서 또는 시각적 코드와 같은 편집기에서 평소와 같이 작동해야합니다 (편집기를 새로 고칠 수 있음).
tslint-folders-diagrams를 참조하십시오
코드를 검증하는 데 사용되는 동일한 구성에서 다이어그램을 자동으로 생성 할 수 있습니다.

자세한 내용은 tslint-folders-diagrams를 참조하십시오.
다음은 현재 사용자 정의 규칙에 대한 요약입니다.
| 규칙 ID | 설명 |
|---|---|
| TSF-Folders 수용자 테스트 | 장애인 단위 테스트, 테스트 스위트 또는 통합 테스트를 감지하십시오. |
| TSF 폴더 파일 이름 | 파일 이름의 케이싱을 확인합니다. 다중 허용 케이싱을 지원하고 유효하지 않은 문자 (예 : 공백 또는 쉼표)가있는 파일 이름을 분리하는 것을 제외하고는 표준 규칙 file-name-casing 유사합니다. |
| TSF-Folders-Import-in Discalled-Folders | node_modules와 같은 비표준 폴더에서 가져 오기를 감지하십시오 |
| TSF-Folders-Imports 사이에 패키지 | 'Higher Level'패키지에서 가져 오기를 감지하십시오. 예를 들어, '영역'패키지 안에있을 때 응용 프로그램 '쉘'패키지에서 가져 오십시오. 이것이 주요 커스텀 규칙입니다. 또한 패키지에 상대 경로 대신이 패키지 이름을 사용하여 가져 오는시기를 감지 할 수 있습니다. |
| TSF-Folders-Test-with-BreakPoint | 통합 테스트에 browser.debug() 와 같은 중단 점이있을 때 감지 |
| 대지 | URL |
|---|---|
| 소스 코드 (Github) | https://github.com/mrseanryan/tslint-folders |
| Github 페이지 | https://mrseanryan.github.io/tslint-folders/ |
| NPM | https://www.npmjs.com/package/tslint-folders |
모든 규칙은 동일한 접두사 tsf-folders- 사용합니다.
사용자 정의 규칙이 관련되어 있음을 분명히하기 위해 규칙의 모든 메시지에는 규칙 ID도 포함됩니다.
이러한 규칙 중 일부는 표준 TSLINT 구성으로 대체 될 수 있습니다. 그러나 사용자 정의 규칙을 갖는 것은 개발자가 무엇을 해결 해야하는지 (또는 해당 코드에 대해 어떤 규칙을 비활성화 해야하는지)를 알 수 있도록 더 명확한 메시지를 제공합니다.
일부 규칙은 '폴더'에 관한 것이 아니라 유용한 것처럼 보이기 때문에 여기에 포함되어 있습니다.
자세한 내용과 예는 단위 테스트를 참조하십시오.
tslint-folders의 소스 코드에서 작업하려면 몇 가지 스크립트가 있습니다.
| 명령 | 설명 |
|---|---|
| 원사 빌드 | 실행할 수있는 곳에서 규칙을 'Dist'폴더에 구축합니다. |
| 원사 보풀 | 규칙의 소스 코드를 줄입니다. |
| 원사 시작 | 코드를 빌드, 테스트 및 줄입니다. |
| 원사 테스트 | 사양 파일에 대한 규칙을 테스트합니다 (*.lint) |
| 원사 테스트 1 | 사양 파일에 대한 단일 규칙 테스트 (*.lint) |
Rule tsf-folders-imports-between-packages 에 대한 단위 테스트는 여기에 있습니다.
단위 테스트는 테스트 데이터를 사용하여 상당히 일반적인 웹 사이트의 패키지 경계를 확인합니다.
일치하는 구성은 tslint.tslint-folders.json에서 볼 수 있습니다
테스트 데이터는 여러 패키지를 사용하는 웹 사이트를 기반으로합니다.
| 패키지 이름 | 설명 |
|---|---|
| 껍데기 | 응용 프로그램 쉘 - 이것은 최상위 패키지이며 다른 패키지에서 가져올 수 있습니다. |
| Todo-Area | 웹 사이트의 'Todo App'영역은 쉘 내에서 호스팅됩니다. 쉘이나 다른 '영역'패키지에서 가져와서는 안됩니다. |
| 토드 접촉 | 웹 사이트의 '연락처 정보'영역은 쉘 내에서 호스팅됩니다. 쉘이나 다른 '영역'패키지에서 가져와서는 안됩니다. |
| 그리드 패키지 | 영역 패키지에서 사용되는 UI 그리드. 다른 인식 된 패키지를 가져와서는 안됩니다. |
| utils | 쉘 및 면적 패키지에서 사용하는 'Utils'패키지. 다른 인식 된 패키지를 가져와서는 안됩니다. |
예제 유효성 검사 : '쉘'은 'Todo-Area'에서 가져올 수 있어야하지만 다른 방법은 아닙니다 (Shell은 더 높은 수준의 추상화에 있으며 2 방향 종속성을 피하려고합니다).
TSLINT-Folders는 패키지의 하위 폴더 간의 수입을 검증 할 수 있습니다.
테스트 데이터 'TODO-AREA'패키지는 '구성 요소'및 '모델'과 같은 상당히 일반적인 하위 폴더로 구성됩니다. tslint.tslint-folders.json은 이러한 폴더 사이의 가져 오기를 확인하도록 구성되었습니다.
| 서브 폴더 이름 | 설명 |
|---|---|
| 구성 요소 | UI 구성 요소의 최상위 폴더. 다른 인식 된 폴더에서 가져올 수 있습니다. |
| 뷰 모델 | UI 구성 요소에서 사용하는 View 모델 폴더. 모델이나 유틸리티에서만 가져올 수 있습니다. |
| 모델 | 보기 모델에서 사용하는 모델 폴더. Utils에서만 가져올 수 있습니다. |
| utils | 'utils'폴더. 다른 인식 된 폴더를 가져와서는 안됩니다. |
예제 유효성 검사 : '구성 요소'는 '모델'에서 가져올 수 있어야하지만 다른 방법은 아닙니다 (구성 요소는 더 높은 수준의 추상화이며 2 방향 종속성을 피하려고합니다).
기여한 readme를 참조하십시오.
이 프로젝트는 우수한 시드러 프로젝트 타입 스크립트 라이브러리 스타터를 기반으로합니다.
이 프로젝트는 대형 타입 코드베이스에서 유사한 코딩 문제를 반복적으로 해결하지 않아도되기 시작했습니다.
여기를 참조하십시오
그것은 거의 그것입니다. 이것이 유용한 지 또는 어떻게 개선 될 수 있는지 알려주십시오!
Sean Ryan의 오리지널 작품 -Sean.ryan (at gmail.com)
이 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다. 자세한 내용은 라이센스 파일을 참조하십시오.