|
| 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 | +); |
0 commit comments