Skip to content

Commit 29b5d62

Browse files
committed
Fixed incorrect path behavior
1 parent 01e24e4 commit 29b5d62

2 files changed

Lines changed: 10 additions & 17 deletions

File tree

src/transpilation/resolve.ts

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ export function resolveDependencies(program: ts.Program, files: ProcessedFile[],
2121
return outFiles;
2222
}
2323

24-
function resolveFileDependencies(file: ProcessedFile, rootDir: string, emitHost: EmitHost): ProcessedFile[] {
25-
const fileDir = path.dirname(file.fileName);
24+
function resolveFileDependencies(file: ProcessedFile, projectRootDir: string, emitHost: EmitHost): ProcessedFile[] {
2625
const dependencies: ProcessedFile[] = [];
2726
for (const required of findRequiredPaths(file.code)) {
2827
// Try to resolve the import starting from the directory `file` is in
29-
const resolvedDependency = resolveDependency(fileDir, required);
28+
const resolvedDependency = resolveDependency(projectRootDir, required);
3029
if (resolvedDependency) {
3130
// If dependency resolved successfully, read its content
3231
const dependencyContent = emitHost.readFile(resolvedDependency);
@@ -35,26 +34,20 @@ function resolveFileDependencies(file: ProcessedFile, rootDir: string, emitHost:
3534
}
3635

3736
// Figure out resolved require path and dependency output path
38-
let resolvedRequire = path.relative(fileDir, resolvedDependency);
39-
let dependencyOutPath = resolvedDependency;
40-
if (resolvedRequire.includes("..")) {
41-
// If the resolved require includes a parent, copy the dependency to a new path
42-
// to avoid require paths with parent directories
43-
resolvedRequire = path.relative(rootDir, resolvedDependency);
44-
dependencyOutPath = path.join(fileDir, resolvedRequire);
45-
}
37+
const resolvedRequire = path.relative(projectRootDir, resolvedDependency);
4638

4739
replaceRequireInCode(file, required, resolvedRequire);
4840
replaceRequireInSourceMap(file, required, resolvedRequire);
4941

5042
// Add dependency to output and resolve its dependencies recursively
5143
const dependency = {
52-
fileName: dependencyOutPath,
44+
fileName: resolvedDependency,
5345
code: dependencyContent,
5446
};
55-
dependencies.push(dependency, ...resolveFileDependencies(dependency, rootDir, emitHost));
47+
dependencies.push(dependency, ...resolveFileDependencies(dependency, projectRootDir, emitHost));
5648
} else {
5749
//throw `TODO: COULD NOT RESOLVE ${required}`;
50+
console.error(`Failed to resolve ${required} referenced in ${file.fileName}.`);
5851
}
5952
}
6053
return dependencies;

test/transpile/module-resolution.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,17 +86,17 @@ describe("module resolution with chained dependencies", () => {
8686
const projectPath = path.resolve(__dirname, "module-resolution", "project-with-dependency-chain");
8787

8888
test("can resolve dependencies in chain", () => {
89+
//transpileProject(path.join(projectPath, "tsconfig.json"))
8990
util.testProject(path.join(projectPath, "tsconfig.json"))
9091
.setMainFileName(path.join(projectPath, "main.ts"))
91-
.expectToEqual({});
92+
.expectToEqual({ result: "dependency3" });
9293
});
9394

94-
test.only("resolved package dependency included in bundle", () => {
95+
test("resolved package dependency included in bundle", () => {
9596
const mainFile = path.join(projectPath, "main.ts");
9697
util.testProject(path.join(projectPath, "tsconfig.json"))
9798
.setMainFileName(mainFile)
9899
.setOptions({ luaBundle: "bundle.lua", luaBundleEntry: mainFile })
99-
.debug()
100-
.expectToEqual({});
100+
.expectToEqual({ result: "dependency3" });
101101
});
102102
});

0 commit comments

Comments
 (0)