aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Dylan Conway <35280289+dylan-conway@users.noreply.github.com> 2023-06-26 19:16:59 -0700
committerGravatar GitHub <noreply@github.com> 2023-06-26 19:16:59 -0700
commit4e4cae0fc308c448fb73d59228fb30bd994453ed (patch)
tree852468d2f4bc708c0a3c33ca1dc045b20ede379b
parent4be15cff026eed36762b955003ce805a59d8f6a7 (diff)
downloadbun-4e4cae0fc308c448fb73d59228fb30bd994453ed.tar.gz
bun-4e4cae0fc308c448fb73d59228fb30bd994453ed.tar.zst
bun-4e4cae0fc308c448fb73d59228fb30bd994453ed.zip
webpack test and add empty `prototype` prop to module (#3421)
-rw-r--r--src/bun.js/modules/NodeModuleModule.cpp9
-rw-r--r--test/js/third_party/webpack/package.json7
-rw-r--r--test/js/third_party/webpack/test.js11
-rw-r--r--test/js/third_party/webpack/webpack.test.ts27
-rw-r--r--test/js/third_party/webpack/world.js3
-rw-r--r--test/package.json4
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": {