I have path mapping working. However, if I try to use the mapped path as a moduleId for a route, it can’t resolve. I’m using ts-loader and webpack (with TsconfigPathsPlugin). I assume there’s something extra I need to do?
I think theres an open issue about aliasing on our webpack plugin repo. Though i may be wrong. Could you help describe it clearer with some pseudo code of what you are trying to do?
Folder Structure
- Root
- ClientApp
- app
- components
- app
- app.html
- app.ts
- app
- components
- modules
- core
- admin
- index.html
- index.ts
- admin
- core
- app
- ClientApp
tsconfig.json
{
...
"baseUrl": ".",
"paths": {
"core/*": [ "ClientApp/modules/core/*" ],
}
}
app.ts - Configuring Router
I can successfully do import { Index } from "core/admin/index"; in this file, but when i try and use the same path for the route (displayed below), it gives an error when trying to navigate.
private configureRouter(config: RouterConfiguration) {
...
config.map([
{
route: ["", "home"],
name: "home",
settings: { icon: "fa fa-home" },
moduleId: "../home/home",
nav: true,
title: "Home"
},
...
{
route: "admin",
name: "admin",
moduleId: PLATFORM.moduleName("core/admin/index"),
title: "Admin"
}
]);
}
You need to config path aliasing with both TypeScript and webpack. Go to your webpack.config.js and modify resolve to similar to the following:
resolve: {
// ... existing properties
alias: {
core: './ClientApp/modules/core'
}
}
Note that './ClientApp/modules/core' varies depends where you run the command. Maybe other folks who have done something similar can help you out here. Anyone please? 
That’s what the TsconfigPathsPlugin is doing already. As I said, it is working, just not when used by the router.
I found a different way of making it work. By adding an index.ts in the core folder with export function configure(config: FrameworkConfiguration) I can add it as a feature during boot making the core folder accessible everywhere via modules/core/*; so I can reference the class I need using modules/core/admin/index. This also resolves another problem I had. So two birds with one stone.