diff options
| -rw-r--r-- | src/bun.js/modules/NodeModuleModule.cpp | 9 | ||||
| -rw-r--r-- | test/js/third_party/webpack/package.json | 7 | ||||
| -rw-r--r-- | test/js/third_party/webpack/test.js | 11 | ||||
| -rw-r--r-- | test/js/third_party/webpack/webpack.test.ts | 27 | ||||
| -rw-r--r-- | test/js/third_party/webpack/world.js | 3 | ||||
| -rw-r--r-- | test/package.json | 4 |
6 files changed, 57 insertions, 4 deletions
diff --git a/src/bun.js/modules/NodeModuleModule.cpp b/src/bun.js/modules/NodeModuleModule.cpp index 34d45698f..88e08a3ac 100644 --- a/src/bun.js/modules/NodeModuleModule.cpp +++ b/src/bun.js/modules/NodeModuleModule.cpp @@ -142,10 +142,10 @@ void generateNodeModuleModule(JSC::JSGlobalObject *globalObject, exportValues.append( jsCast<Zig::GlobalObject *>(globalObject)->lazyRequireCacheObject()); - exportNames.append(JSC::Identifier::fromString(vm, "builtinModules"_s)); + exportNames.append(JSC::Identifier::fromString(vm, "prototype"_s)); + exportValues.append(constructEmptyObject(globalObject)); - exportNames.append(JSC::Identifier::fromString(vm, "globalPaths"_s)); - exportValues.append(JSC::constructEmptyArray(globalObject, 0)); + exportNames.append(JSC::Identifier::fromString(vm, "builtinModules"_s)); JSC::JSArray *builtinModules = JSC::JSArray::create( vm, @@ -167,5 +167,8 @@ void generateNodeModuleModule(JSC::JSGlobalObject *globalObject, builtinModules->putDirectIndex(globalObject, 6, JSC::jsString(vm, String("bun:sqlite"_s))); exportValues.append(builtinModules); + + exportNames.append(JSC::Identifier::fromString(vm, "globalPaths"_s)); + exportValues.append(JSC::constructEmptyArray(globalObject, 0)); } } // namespace Zig diff --git a/test/js/third_party/webpack/package.json b/test/js/third_party/webpack/package.json new file mode 100644 index 000000000..fb08bfdc5 --- /dev/null +++ b/test/js/third_party/webpack/package.json @@ -0,0 +1,7 @@ +{ + "name": "webpack-test", + "version": "2.0.0", + "dependencies": { + "webpack": "5.88.0" + } +}
\ No newline at end of file diff --git a/test/js/third_party/webpack/test.js b/test/js/third_party/webpack/test.js new file mode 100644 index 000000000..bfd3e80a1 --- /dev/null +++ b/test/js/third_party/webpack/test.js @@ -0,0 +1,11 @@ +import { world } from "./world.js"; + +function component() { + const element = document.createElement("div"); + + element.innerHTML = "hello " + world(); + + return element; +} + +document.body.appendChild(component()); diff --git a/test/js/third_party/webpack/webpack.test.ts b/test/js/third_party/webpack/webpack.test.ts new file mode 100644 index 000000000..ffc8195c6 --- /dev/null +++ b/test/js/third_party/webpack/webpack.test.ts @@ -0,0 +1,27 @@ +import { bunExe, bunEnv } from "harness"; +import { existsSync, rmdirSync } from "fs"; +import { join } from "path"; + +afterEach(() => { + rmdirSync(join(import.meta.dir, "dist"), { recursive: true }); +}); + +test("webpack works", () => { + Bun.spawnSync({ + cmd: [bunExe(), "-b", "webpack", "--entry", "./test.js", "-o", "./dist/test1/main.js"], + cwd: import.meta.dir, + env: bunEnv, + }); + + expect(existsSync(join(import.meta.dir, "dist", "test1/main.js"))).toBe(true); +}); + +test("webpack --watch works", async () => { + Bun.spawnSync({ + cmd: ["timeout", "3", bunExe(), "-b", "webpack", "--entry", "./test.js", "-o", "./dist/test2/main.js", "--watch"], + cwd: import.meta.dir, + env: bunEnv, + }); + + expect(existsSync(join(import.meta.dir, "dist", "test2/main.js"))).toBe(true); +}); diff --git a/test/js/third_party/webpack/world.js b/test/js/third_party/webpack/world.js new file mode 100644 index 000000000..3fa21bf67 --- /dev/null +++ b/test/js/third_party/webpack/world.js @@ -0,0 +1,3 @@ +export function world() { + return "world"; +} diff --git a/test/package.json b/test/package.json index b9aa55ae2..d4246ea43 100644 --- a/test/package.json +++ b/test/package.json @@ -23,7 +23,9 @@ "svelte": "^3.55.1", "typescript": "^5.0.2", "undici": "^5.20.0", - "vitest": "^0.32.2" + "vitest": "^0.32.2", + "webpack": "5.88.0", + "webpack-cli": "4.7.2" }, "private": true, "scripts": { |
