2013-04-19 14 views
5

직접 선언 파일을 제공 할 필요없이 node_modules 디렉토리에서 모듈을 직접 가져 오는 것이 좋을 것이라고 생각합니다. 선언은 모듈 자체에서 제공한다고 가정합시다). 그 문제는 선언과 함께 오는 종속성 (파일 경로는 모듈에 상대적으로 해결 될 수 있지만 중복을 일으키고 컴파일러가이를 처리 할 수 ​​없다는 것을 의미합니다)이라고 생각합니다. npm 저장소의 간단한 설치로는 충분하지 않기 때문에 현재 노드 모듈과 함께 작업하는 것이 매우 불편합니다. 수동으로 선언문을 검색하고 프로젝트에서 제공해야하기 때문에 매우 불편합니다. 우리 프로젝트가 10 개의 노드 모듈 (모두 선언문을 가짐)에 의존하고 있다고 가정 해 봅시다. 1 년 후 우리는 노드 모듈을 업데이트하려고합니다. 우리는 수동으로 새로운 선언을 찾아야 만하고, 우리는 20 개 정도의 프로젝트가 있다고 말합니다 (악몽이 ​​될 것입니다). 어쩌면 노드 모듈에서 .ts 파일을 직접 가져올 수있는 옵션이 있어야할까요?Node.js npm 모듈 (node_modules) 가져 오기 및 TypeScript의 선언

의견이 있으십니까?

귀하의 의견을들을 수는 CodePlex에서 다시 후 ...

+0

codeplex 스레드에 대한 링크가 좋을 것입니다. 추신 : 여기에 해결책을 묻는 메시지가 실제로 표시되지 않습니다. – basarat

+0

여기 CodePlex 스레드에 대한 링크가 있습니다. https://typescript.codeplex.com/discussions/440670 – jzvelc

답변

1

내가 노드 모듈은 지금까지 내장 포함 것이다 타이프 지원을 생각하지 않는 것입니다. 언어는 여전히 0.x 버전이며 공식적으로 알파 버전으로 설명됩니다.

그럼에도 불구하고 타이프 스크립트의 구성 과정을 쉽게 할 수 있습니다. Github에서 이미 같은 .d.ts 파일의 거대한 컬렉션을 포함

https://github.com/borisyankov/DefinitelyTyped 또는 https://github.com/soywiz/typescript-node-definitions

당신은이 도구를 한 번 봐 걸릴 수도 있습니다 : https://github.com/Diullei/tsd합니다. 나는 그것을 사용한 적이 없지만 그것이 거의 당신이 찾고있는 것처럼 보입니다.

또한 .d.ts 파일의 공식 데이터베이스가 계획되어 있다고 들었습니다. 불행히도 링크를 찾을 수 없지만 어쨌든 구현되기까지는 다소 시간이 걸릴 것입니다.

+0

대성동은 멋지고 훌륭합니다. 우리가 필요로하는 것 ... 어떻게 든 그것은 선언이 node_modules 폴더에서 해결 될 수 있다는 것을 알게 될 것입니다. – jzvelc

2

grunt-typescript를 사용하는 경우이 문제를 해결하는 풀 요청이 있습니다.

NPM 패키지를 사용하는 표준 방법은 타이프에 패키지를 지정하는 정의 파일 을 제공하는 것입니다 node_modules 모듈 (즉, NPM) 및 작업 풀 요청 README

에서 https://github.com/k-maru/grunt-typescript/pull/36

를 참조하십시오 거기에서 모듈을 가져 오십시오.

///<reference path="path/to/mod.d.ts" /> 
import mod = module('mod') 

타이프 스크립트 컴파일러는 nodejs requireimport 변환합니다. 당신은 당신이 의존성 여러 단계의 작업 할 때 거의 모든 수준에서 패키지를 넣을 수있는 NPM 설치 패키지와 NPM에 대한 정확한 경로를 알 필요로

var mod = require('mod') 

이 꽤 다루기이다.config (설정) 꿀꿀 거리는 소리에 node_modules 옵션을

당신 수있는 패키지가 오래가 로컬 아니라 전 세계적으로 설치되어있는 NPM에 의해 설치 한 정확한 수준을 알 필요없이 바로 import NPM 패키지. import으로

당신의 타이프 라이터 소스에 NPM 모듈은 대부분 때문에이 작품 행운의 기회에

import npmModule = module('node_modules/npmModule/foo') 

을한다. Typescript 컴파일러는 이 루트쪽으로가는 도중에 존재하고 결과로 자바 스크립트 파일에 npmModule/foo()이 포함되어 있으면 타이프 스크립트 정의 파일 node_modules/npmModule/foo.d.ts을 읽습니다.

관련 문제