2017-06-02 32 views
1

我看到這個網頁閱讀說明的ModuleResulution爲打字稿「node_modules」的離子2外進口動態:https://www.typescriptlang.org/docs/handbook/module-resolution.html#node

從我所理解的是,所有這一切我想要導入的文件必須在node_modules目錄。有沒有辦法導入不在這個目錄中的文件?

比方說,我有以下目錄結構(src/MyApp/):

├── Console 
│ └── Console.ts 
├── Interfaces 
│ └── CredentialsInterface.ts 
└── Service 
    ├── Authentication.ts 
    ├── Router.ts 
    └── Connector.ts 

再比如說在我的src/pages/login/login.ts我用這個來導入Console.ts

import { Console } from '../../MyApp/Console/Console'; 

但我想實現像這個:

import { Console } from '@MyApp/Console/Console'; 

W這裏@MyAppsrc/MyApp的別名。

由於潛在的文件/文件夾重定位或稍後重構,我可能想要替換文件的位置,但我不想通過手動檢查所有文件來更改「硬編碼」路徑,並且我知道這是可能的其他工具,如Composer

這是以任何方式可能嗎?提前致謝!

+0

視覺環境沒有你嘗試在tsconfig.json中設置'path'? –

+0

我試過..它沒有工作。原因可能是因爲它只適用於「經典」模塊分辨率,或者我剛剛設置了我的路徑錯誤。即使我的模塊分辨率設置爲「節點」,這樣做還可以嗎? –

回答

1

爲此,您必須更新幾個文件,您可以通過更新tsconfig.json並擴展webpack配置文件來完成。

你需要添加上compilerOptionstsconfig.json

"baseUrl": "./src", 
"paths": { 
    "app/*": [ 
    "app/*" 
    ], 
    "@env": [ 
    "environments/environment" 
    ], 
    "interfaces/*": [ 
    "interfaces/*" 
    ], 
    "providers/*": [ 
    "providers/*" 
    ], 
    "validators/*": [ 
    "validators/*" 
    ] 
} 

我離開一個鏈接,我沒有實現這個簡短的文檔,並且也使用的angular-cli

Ionic envs and beauty paths