Skip to content

Commit 348fea9

Browse files
committed
fix(webpack): Aliased module paths now properly map to the correct aurelia-loader module id
1 parent 9f6f798 commit 348fea9

3 files changed

Lines changed: 437 additions & 133 deletions

File tree

src/AureliaDependenciesPlugin.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { IncludeDependency } from "./IncludeDependency";
22
import BasicEvaluatedExpression = require("webpack/lib/BasicEvaluatedExpression");
3+
import { preserveModuleName } from "./PreserveModuleNamePlugin";
34

45
const TAP_NAME = "Aurelia:Dependencies";
56

@@ -13,7 +14,13 @@ class AureliaDependency extends IncludeDependency {
1314

1415
class Template {
1516
apply(dep: AureliaDependency, source: Webpack.Source) {
16-
source.replace(dep.range[0], dep.range[1] - 1, "'" + dep.request.replace(/^async(?:\?[^!]*)?!/, "") + "'");
17+
// Get the module id, fallback to using the module request
18+
let moduleId: string = dep.request;
19+
if (dep.module && typeof dep.module[preserveModuleName] === 'string') {
20+
moduleId = dep.module[preserveModuleName];
21+
}
22+
23+
source.replace(dep.range[0], dep.range[1] - 1, "'" + moduleId.replace(/^async(?:\?[^!]*)?!/, "") + "'");
1724
};
1825
}
1926

@@ -41,7 +48,7 @@ class ParserPlugin {
4148
hooks.evaluateIdentifier.tap("imported var.moduleName", TAP_NAME, (expr: Webpack.MemberExpression) => {
4249
if (expr.property.name === "moduleName" &&
4350
expr.object.name === "PLATFORM" &&
44-
expr.object.type === "Identifier") {
51+
String(expr.object.type) === "Identifier") {
4552
return new BasicEvaluatedExpression().setIdentifier("PLATFORM.moduleName").setRange(expr.range);
4653
}
4754
return undefined;
@@ -56,7 +63,7 @@ class ParserPlugin {
5663
hooks.evaluate.tap("MemberExpression", TAP_NAME, expr => {
5764
if (expr.property.name === "moduleName" &&
5865
(expr.object.type === "MemberExpression" && expr.object.property.name === "PLATFORM" ||
59-
expr.object.type === "Identifier" && expr.object.name === "PLATFORM")) {
66+
String(expr.object.type) === "Identifier" && expr.object.name === "PLATFORM")) {
6067
return new BasicEvaluatedExpression().setIdentifier("PLATFORM.moduleName").setRange(expr.range);
6168
}
6269
return undefined;

0 commit comments

Comments
 (0)