2016-11-02 4 views
0

Angular2 구성 요소 라이브러리를 만듭니다. npm에 게시하고 있습니다. 소스 코드에서 index.ts를 배럴 파일로 사용하고 있습니다. 내 .npmignore 파일에 * .ts가 포함되어 있지만 index.ts는 npm에 게시 된 코드에 포함됩니다. 내가 소비하는 Angular2 프로젝트에 구성 요소를 설치하면 index.ts가 node_modules 폴더에 설치된 코드에 포함됩니다. index.ts가 루트 폴더에 없으므로 설치된 npm 라이브러리 전체에 걸쳐 index.ts를 사용하면 기본 응용 프로그램이 빌드되지 않습니다. 놀랍게도, 다른 모든 .ts 파일은 npm 설치에서 제외됩니다.게시 할 때 .npmignore가 index.ts 파일을 무시하지 않음

node_modules 
npm-debug.log 
Thumbs.db 
.DS_Store 
.idea 
.vscode 
*.ts 
**/*.ts 
**/index.ts 
!*.d.ts 
.gitignore 
.npmignore 
license-banner.txt 
tsconfig.json 
tsconfig.publish.json 

모든게은 index.ts 제외하고 무시지고 :

여기 내 .npmignore 파일입니다.

나는 수동으로 들어가서 모든 index.ts 파일을 삭제해야합니다. 그러면 모든 것이 예상대로 작동합니다.

내가 잃어버린 내용으로 인해 index.ts가 포함됩니다.

저는 3.9.6 버전의 npm을 사용하고 있습니다.

도움 주셔서 감사합니다.

+0

'**/index.ts'는 루트가 아닌 모든 하위 디렉토리에서 모든 index.ts 파일을 무시한다는 것을 의미합니다. 이 문제를 해결하려면'** /'를 제거하십시오. 어쨌든'* .ts'는'index.ts'를 무시해야합니다 ... – Supamiu

+0

답장을 보내 주셔서 감사합니다. 나는 원래 * .ts를 가지고 있었고 index.ts는 여전히 포함되어있었습니다. **/index.ts는 전역 제외를 시도했습니다. 모든 하위 디렉토리의 모든 index.ts가 포함됩니다. @ 빨대 쥐고 ... –

답변

0

많은 연구와 시행 착오 끝에 JS 코드와 타이프 스크립트 유형 정보 (.d.ts) 파일에 내 TS 코드를 컴파일하기위한 출력 디렉토리를 추가해야한다는 것을 알았습니다. 생성 된 코드가 별도의 폴더 (이 경우/lib)에 있으면 내 구현이 내 lib 폴더에서 가져 오기로 변경되었습니다. 내 .ts 파일은 모두 src 폴더에 남아 있습니다.

라이브러리를 설치 한 프로젝트가 현재 예상대로 컴파일됩니다. 결론은 생성 된 코드 (JS 및 .dts 파일)가 소스 코드와 별도의 폴더에 있는지 확인하는 것입니다. 이제는 분명해 보입니다.