2016-09-27 80 views
3

我已經安裝了一個.d.ts文件(即,爲p2.js庫類型定義)作爲外部(非全局)typings模塊使用下面的命令:如何防止TypeScript在輸出中包含.d.ts導入?

typings install p2=github:schteppe/p2.js/index.d.ts#9d56924 

然後我用它就像我的打字稿代碼這樣的:

import * as p2 from 'p2'; 

此導入出現在編譯的JavaScript:

var p2 = require('p2'); 

但是,很明顯,我不知道需要它,因爲p2外部模塊只包含類型定義,而不是實際的代碼。我然後運行在打字稿的輸出webpack,也未能與

...Module not found: Error: Cannot resolve module 'p2'... 

什麼是使用這個外部模塊,使打字稿和我的IDE(原子與原子打字稿插件)看到的定義正確的方式進行編譯,但沒有require調用它包含在TypeScript輸出中?

回答

1

的WebPack支持配置的外部。

你的情況,這將是對的WebPack文檔處理的外部
externals: [ { "p2": true}]

更多信息: webpack.github.io/docs/configuration.html#externals。

編輯︰更新與評論中的新信息

+0

整個問題是它是非全局(外部)鍵入,因此必須導入。 – interphx

+0

啊,我看到,webpack支持配置外部。 你的情況,這將是 '的外部:[{ 「P2」:真 } ]' http://webpack.github.io/docs/configuration.html#externals。讓我知道如果它的作品,那麼我會更新原來的答案。 – Eldin

+0

謝謝,這似乎工作。仍然覺得有點hacky(打字稿不包括在其輸出中的聲明,沒有理由包含對僅包含聲明的模塊的引用),但我理解爲什麼它以這種方式工作。如果沒有其他更清潔的解決方案會被提出,我會接受這個答案。 – interphx

0
+0

但這只是禁用TypeScript編譯。在我決定使用非全局typedef模塊之前,一切工作都正常,可以使用兩步構建過程(TypeScript→JavaScript後面跟着JavaScript→綁定JavaScript與typescript和webpack重複使用)。使用ts-loader是唯一能讓它工作的方法嗎? – interphx