Skip to content

Commit 1b359d5

Browse files
authored
chore: add examples/resolver.js for easy comparing with enhanced-resolve (#107)
1 parent b5f9591 commit 1b359d5

File tree

4 files changed

+190
-120
lines changed

4 files changed

+190
-120
lines changed

examples/resolve.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#!/usr/bin/env node
2+
// Usage: node examples/resolve.js <absolute_dir> <specifier>
3+
const path = require("path");
4+
const fs = require("fs");
5+
const { ResolverFactory, CachedInputFileSystem } = require("enhanced-resolve");
6+
7+
function printUsageAndExit() {
8+
console.error("Usage: node examples/resolve.js <absolute_dir> <specifier>");
9+
process.exit(1);
10+
}
11+
12+
const [, , baseDir, specifier] = process.argv;
13+
if (!baseDir || !specifier) printUsageAndExit();
14+
if (!path.isAbsolute(baseDir)) {
15+
console.error(`${baseDir} must be an absolute path.`);
16+
process.exit(1);
17+
}
18+
if (!fs.existsSync(baseDir) || !fs.statSync(baseDir).isDirectory()) {
19+
console.error(
20+
`${baseDir} must be a directory that will be resolved against.`
21+
);
22+
process.exit(1);
23+
}
24+
25+
console.log("path:", baseDir);
26+
console.log("specifier:", specifier);
27+
28+
const fileDependencies = new Set();
29+
const missingDependencies = new Set();
30+
31+
const resolver = ResolverFactory.createResolver({
32+
aliasFields: ["browser"],
33+
alias: { asdf: "./test.js" },
34+
extensions: [".js", ".ts"],
35+
extensionAlias: { ".js": [".ts", ".js"] },
36+
conditionNames: ["node", "import"], // ESM
37+
// conditionNames: ['node', 'require'], // CJS
38+
fileSystem: new CachedInputFileSystem(fs, 4000)
39+
});
40+
41+
resolver.resolve(
42+
{},
43+
baseDir,
44+
specifier,
45+
{ fileDependencies, missingDependencies },
46+
(err, result, resDetails) => {
47+
if (err) {
48+
console.log("Error:", err.message || err);
49+
} else {
50+
console.log("Resolved:", result);
51+
}
52+
console.log("file_deps:", Array.from(fileDependencies).sort());
53+
console.log("missing_deps:", Array.from(missingDependencies).sort());
54+
}
55+
);

examples/resolver.rs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,21 @@ async fn main() {
2929
// condition_names: vec!["node".into(), "require".into()],
3030
..ResolveOptions::default()
3131
};
32+
let mut ctx = Default::default();
3233

33-
match Resolver::new(options).resolve(path, &specifier).await {
34+
match Resolver::new(options)
35+
.resolve_with_context(path, &specifier, &mut ctx)
36+
.await
37+
{
3438
Err(error) => println!("Error: {error}"),
3539
Ok(resolution) => println!("Resolved: {:?}", resolution.full_path()),
36-
}
40+
};
41+
42+
let mut sorted_file_deps = ctx.file_dependencies.iter().collect::<Vec<_>>();
43+
sorted_file_deps.sort();
44+
println!("file_deps: {:#?}", sorted_file_deps);
45+
46+
let mut sorted_missing = ctx.missing_dependencies.iter().collect::<Vec<_>>();
47+
sorted_missing.sort();
48+
println!("missing_deps: {:#?}", sorted_missing);
3749
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"ava": "^6.1.3",
2323
"commander": "^13.1.0",
2424
"emnapi": "^1.2.0",
25+
"enhanced-resolve": "^5.17.1",
2526
"prettier": "^3.6.2",
2627
"semver": "^7.7.1",
2728
"typescript": "^5.5.3",

0 commit comments

Comments
 (0)