2017-04-05 1 views
0

typescript로 만든 모듈을 만들었으므로 주 응용 프로그램에 javascript로 컴파일하지 않았습니다. 은 따라서 나는이 같은 파일 구조를했습니다 :node_modules의 typescript 모듈을 이미 컴파일해야합니까

my-project 
---node_modules 
------my-module 
---------index.ts 
---src 
------myfile.ts 

myfile.ts

{ 
    "compilerOptions": { 
     "target": "es5", 
     "lib": ["es6", "dom"], 
     "types": ["reflect-metadata"], 
     "module": "commonjs", 
     "moduleResolution": "node", 
     "experimentalDecorators": true, 
     "emitDecoratorMetadata": false, 
     "sourceMap": true, 
     "declaration": false, 
     "outDir": "out" 
    }, 
    "exclude": [ 
     "node_modules", 
     "out" 
    ] 
} 

비주얼 스튜디오 코드는 불평하지 않습니다

import { x } from 'my-module'; 

tsconfig, 그것은 발견 모듈과 내게 intellisens을 제공합니다. 그러나 프로그램을 실행할 때 나는 다음을 얻습니다.

Error: Cannot find module 'my-module'

가져 오는 인터페이스가 정상적으로 작동하는 동안. 따라서 타이프 스크립트는 수입을 따르지 않고 컴파일도하지 않기 때문에 그것이라고 생각합니다.

typescript 모듈을 npm에 게시하기 전에 javascript로 컴파일해야합니까? 그렇지 않아도 되겠습니까?

추신 : npm으로 게시하기 전에 컴파일하면 정상적으로 작동합니다. 나는 궁금해했다. 나는 그렇게해야만 하는가?

답변

2

일반적으로 모범 사례로 패키지 '바이너리'를 npm에 게시해야합니다. TypeScript를 사용하면 파일이 변환 된 .js을 의미합니다.

이렇게하면 패키지 사용자가 건물을 복잡하게 만들지 않고도 패키지를 사용할 수 있습니다. 즉, 바이너리는 직접 '사용할 준비가되었습니다'.

즉, (TS) 소스도 포함 시키면 패키지에 따라 프로젝트에서 원하는 방식으로 컴파일 할 수 있습니다. 즉, 편의를 위해 바이너리를 제공했기 때문에 최종 사용자는 소스를 프로젝트에서 직접 사용할 수 있습니다.

+0

답변의 색조는 모범 사례 일 뿐이지 만 컴파일 된 .js가 없어도 작동해야한다는 것을 암시하는 것처럼 보입니다. 그러나 컴파일되지 않을 때 작동하지 않는다면, 모듈을 컴파일하고 npm에 게시하면 모듈을 사용할 때 컴파일 된'.js'와 '.ts'를 컴파일하지 않습니다. 그게 내 두 번째 프로젝트에서 다른 구성으로 컴파일하고 싶기 때문입니다. – Ced

관련 문제