mirror of
https://github.com/denoland/deno.git
synced 2025-09-29 13:44:47 +00:00
feat: add ext/node for require support (#15362)
This commit adds "ext/node" extension that implementes CommonJS module system. In the future this extension might be extended to actually contain implementation of Node compatibility layer in favor of "deno_std/node". Currently this functionality is not publicly exposed, it is available via "Deno[Deno.internal].require" namespace and is meant to be used by other functionality to be landed soon. This is a minimal first pass, things that still don't work: support for dynamic imports in CJS conditional exports
This commit is contained in:
parent
af618e3b8f
commit
1f54d87789
27 changed files with 1648 additions and 0 deletions
17
cli/tests/testdata/commonjs/init.js
vendored
Normal file
17
cli/tests/testdata/commonjs/init.js
vendored
Normal file
|
@ -0,0 +1,17 @@
|
|||
import { fromFileUrl } from "../../../../test_util/std/path/mod.ts";
|
||||
|
||||
const DENO_NODE_COMPAT_URL = Deno.env.get("DENO_NODE_COMPAT_URL");
|
||||
const moduleAllUrl = `${DENO_NODE_COMPAT_URL}node/module_all.ts`;
|
||||
const processUrl = `${DENO_NODE_COMPAT_URL}node/process.ts`;
|
||||
let moduleName = import.meta.resolve(Deno.args[0]);
|
||||
moduleName = fromFileUrl(moduleName);
|
||||
|
||||
const [moduleAll, processModule] = await Promise.all([
|
||||
import(moduleAllUrl),
|
||||
import(processUrl),
|
||||
]);
|
||||
Deno[Deno.internal].require.initializeCommonJs(
|
||||
moduleAll.default,
|
||||
processModule.default,
|
||||
);
|
||||
Deno[Deno.internal].require.Module._load(moduleName, null, true);
|
Loading…
Add table
Add a link
Reference in a new issue