2017-10-18 65 views
0

我使用npm link引用一個打字稿圖書館,我在我的測試項目開發,以解決相對路徑模塊TSC試圖在錯誤的文件夾

這意味着我node_modules看起來像這樣:

node_modules/ 
| myLib/ 
| | dist/ 
| | | subModule/ 
| | | | index.js 
| | | | index.d.ts 
| | | index.js 
| | | index.d.ts 
| | node_modules/ 
| | src/ 
| | tsconfig.json 
| | package.json 

這意味着當我試圖使用import X from "myLib"來引用我的庫時,我必須告訴編譯器源代碼位於/ dist forlder中,而不是myLib的根目錄。在MYLIB

的的package.json問題是,當我嘗試的路徑相對導入MYLIB 像import Y from "myLib/subModule"「./dist/index.js」:

我加入了「主」解決了這個

這一次它不起作用。 因爲不是看着node_modules/myLib/dist/subModule TSC正在尋找不存在的node_modules/myLib/subModules/dist/

如何讓編譯器查看子模塊的正確路徑?

回答

1

您可以通過在您的tsconfig.json中使用"paths" key in the "compilerOptions"來解決此問題。事情是這樣的:

{ 
    "compilerOptions": { 
    "paths": { 
     "myLib/*": "node_modules/myLib/dist/*" 
    } 
    } 
} 

可悲的是,這是與打字稿編譯器如何解析定義文件時,你有你的package.json一個"types"關鍵的東西standing issue的。

+0

謝謝。但是,當它使用簡單的'tsc'時,當我嘗試使用webpack(awesome-typescript-loader)構建測試項目時,出現'Can not resolve'myLib/subModule'。 – Darky

+0

找到解決我的第二個問題。 'awesome-typescript-loader'需要在使用高級路徑解析時添加一個解析插件。 https://github.com/s-panferov/awesome-typescript-loader#advanced-path-resolution-in-typescript-20 – Darky