X Tutup
Skip to content

Commit 60f11dd

Browse files
authored
Resolve the correct lualib_bundles for node_modules dependencies (#1283)
* Resolve the correct lualib_bundles for node_modules dependencies * Unfocus test
1 parent c47d3b3 commit 60f11dd

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

src/transpilation/resolve.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@ function resolveFileDependencies(file: ProcessedFile, context: ResolutionContext
138138
const diagnostics: ts.Diagnostic[] = [];
139139

140140
for (const required of findRequiredPaths(file.code)) {
141-
// Do no resolve lualib
142-
if (required === "lualib_bundle") {
141+
// Do no resolve lualib, unless it is included from node_modules
142+
if (required === "lualib_bundle" && !isNodeModulesFile(file.fileName)) {
143143
dependencies.push({ fileName: "lualib_bundle", code: "" });
144144
continue;
145145
}

test/transpile/module-resolution.spec.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,10 +247,21 @@ describe("module resolution project with dependencies built by tstl library mode
247247
};
248248

249249
test("can resolve lua dependencies", () => {
250-
util.testProject(path.join(projectPath, "tsconfig.json"))
250+
const transpileResult = util
251+
.testProject(path.join(projectPath, "tsconfig.json"))
251252
.setMainFileName(path.join(projectPath, "main.ts"))
252253
.setOptions({ outDir: "tstl-out" })
253-
.expectToEqual(expectedResult);
254+
.expectToEqual(expectedResult)
255+
.getLuaResult();
256+
257+
// Assert lualib_bundle from node_module is include
258+
const expectedLualibBundle = path.join("lua_modules", "dependency1", "lualib_bundle.lua");
259+
expect(transpileResult.transpiledFiles.some(f => f.outPath.endsWith(expectedLualibBundle))).toBe(true);
260+
// Assert node_modules file requires the correct lualib_bundle
261+
const requiringLuaFile = path.join("lua_modules", "dependency1", "index.lua");
262+
const lualibRequiringFile = transpileResult.transpiledFiles.find(f => f.outPath.endsWith(requiringLuaFile));
263+
expect(lualibRequiringFile).toBeDefined();
264+
expect(lualibRequiringFile?.lua).toContain('require("lua_modules.dependency1.lualib_bundle")');
254265
});
255266

256267
test("can resolve dependencies and bundle", () => {

test/transpile/module-resolution/project-with-tstl-library-modules/dependency1-ts/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,8 @@ import { dependency1OtherFileFunc } from "./d1otherfile";
33
export function dependency1IndexFunc() {
44
return "function in dependency 1 index: " + dependency1OtherFileFunc();
55
}
6+
7+
export function squares(nums: number[]) {
8+
// Require lualib functionality
9+
return nums.map(n => n * n);
10+
}

0 commit comments

Comments
 (0)
X Tutup