diff --git a/libs/node_resolver/resolution.rs b/libs/node_resolver/resolution.rs index 1a1a5024b4..2afb70183d 100644 --- a/libs/node_resolver/resolution.rs +++ b/libs/node_resolver/resolution.rs @@ -562,7 +562,9 @@ impl< let maybe_file_type = self.sys.get_file_type(&path); match maybe_file_type { Ok(FileType::Dir) => { - if resolution_mode == ResolutionMode::Import { + if resolution_mode == ResolutionMode::Import + && !self.resolution_config.bundle_mode + { let suggested_file_name = ["index.mjs", "index.js", "index.cjs"] .into_iter() .find(|e| self.sys.is_file(&path.join(e))); diff --git a/tests/specs/bundle/cjs_dir_import_package_json/__test__.jsonc b/tests/specs/bundle/cjs_dir_import_package_json/__test__.jsonc deleted file mode 100644 index 70eb8807a8..0000000000 --- a/tests/specs/bundle/cjs_dir_import_package_json/__test__.jsonc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "args": "bundle --quiet main.cjs", - "output": "bundle.out" -} diff --git a/tests/specs/bundle/cjs_dir_import_package_json/bundle.out b/tests/specs/bundle/cjs_dir_import_package_json/bundle.out deleted file mode 100644 index 8278bfaf23..0000000000 --- a/tests/specs/bundle/cjs_dir_import_package_json/bundle.out +++ /dev/null @@ -1,20 +0,0 @@ -var __getOwnPropNames = Object.getOwnPropertyNames; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; - -// node_modules/package/constants/sub.js -var require_sub = __commonJS({ - "node_modules/package/constants/sub.js"(exports, module) { - module.exports = 5; - } -}); - -// main.cjs -var require_main = __commonJS({ - "main.cjs"() { - var value = require_sub(); - console.log(value); - } -}); -export default require_main(); diff --git a/tests/specs/bundle/dir_import_package_json/__test__.jsonc b/tests/specs/bundle/dir_import_package_json/__test__.jsonc new file mode 100644 index 0000000000..81f0fc4612 --- /dev/null +++ b/tests/specs/bundle/dir_import_package_json/__test__.jsonc @@ -0,0 +1,4 @@ +{ + "args": "bundle --quiet main.mjs", + "output": "bundle.out" +} diff --git a/tests/specs/bundle/dir_import_package_json/bundle.out b/tests/specs/bundle/dir_import_package_json/bundle.out new file mode 100644 index 0000000000..6c03d19654 --- /dev/null +++ b/tests/specs/bundle/dir_import_package_json/bundle.out @@ -0,0 +1,48 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); + +// node_modules/package/constants/sub.js +var require_sub = __commonJS({ + "node_modules/package/constants/sub.js"(exports, module) { + module.exports = 5; + } +}); + +// main.cjs +var require_main = __commonJS({ + "main.cjs"() { + var value = require_sub(); + console.log(value); + } +}); + +// node_modules/esm-pkg/index.js +var constants = __toESM(require_sub()); +var esm_pkg_default = constants; + +// main.mjs +var import_main = __toESM(require_main(), 1); +console.log(esm_pkg_default); diff --git a/tests/specs/bundle/cjs_dir_import_package_json/main.cjs b/tests/specs/bundle/dir_import_package_json/main.cjs similarity index 100% rename from tests/specs/bundle/cjs_dir_import_package_json/main.cjs rename to tests/specs/bundle/dir_import_package_json/main.cjs diff --git a/tests/specs/bundle/dir_import_package_json/main.mjs b/tests/specs/bundle/dir_import_package_json/main.mjs new file mode 100644 index 0000000000..98528fcd15 --- /dev/null +++ b/tests/specs/bundle/dir_import_package_json/main.mjs @@ -0,0 +1,3 @@ +import constants from "esm-pkg"; +console.log(constants); +import "./main.cjs"; diff --git a/tests/specs/bundle/dir_import_package_json/node_modules/esm-pkg/index.js b/tests/specs/bundle/dir_import_package_json/node_modules/esm-pkg/index.js new file mode 100644 index 0000000000..f2e633ac44 --- /dev/null +++ b/tests/specs/bundle/dir_import_package_json/node_modules/esm-pkg/index.js @@ -0,0 +1,5 @@ +// this should work when bundling even though it's esm, +// but will not work at runtime due to Node's ESM restrictions +import * as constants from "package/constants"; + +export default constants; \ No newline at end of file diff --git a/tests/specs/bundle/dir_import_package_json/node_modules/esm-pkg/package.json b/tests/specs/bundle/dir_import_package_json/node_modules/esm-pkg/package.json new file mode 100644 index 0000000000..aead43de36 --- /dev/null +++ b/tests/specs/bundle/dir_import_package_json/node_modules/esm-pkg/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} \ No newline at end of file diff --git a/tests/specs/bundle/cjs_dir_import_package_json/node_modules/package/constants/package.json b/tests/specs/bundle/dir_import_package_json/node_modules/package/constants/package.json similarity index 100% rename from tests/specs/bundle/cjs_dir_import_package_json/node_modules/package/constants/package.json rename to tests/specs/bundle/dir_import_package_json/node_modules/package/constants/package.json diff --git a/tests/specs/bundle/cjs_dir_import_package_json/node_modules/package/constants/sub.js b/tests/specs/bundle/dir_import_package_json/node_modules/package/constants/sub.js similarity index 100% rename from tests/specs/bundle/cjs_dir_import_package_json/node_modules/package/constants/sub.js rename to tests/specs/bundle/dir_import_package_json/node_modules/package/constants/sub.js diff --git a/tests/specs/bundle/cjs_dir_import_package_json/node_modules/package/package.json b/tests/specs/bundle/dir_import_package_json/node_modules/package/package.json similarity index 100% rename from tests/specs/bundle/cjs_dir_import_package_json/node_modules/package/package.json rename to tests/specs/bundle/dir_import_package_json/node_modules/package/package.json diff --git a/tests/specs/bundle/cjs_dir_import_package_json/package.json b/tests/specs/bundle/dir_import_package_json/package.json similarity index 100% rename from tests/specs/bundle/cjs_dir_import_package_json/package.json rename to tests/specs/bundle/dir_import_package_json/package.json