@bobfrankston/importgen 0.1.20 → 0.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +18 -13
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -67,9 +67,11 @@ function resolveEntryPoint(pkg, packageDir) {
|
|
|
67
67
|
return './index.js';
|
|
68
68
|
}
|
|
69
69
|
/**
|
|
70
|
-
* Recursively collect all dependencies, avoiding circular references
|
|
70
|
+
* Recursively collect all dependencies, avoiding circular references.
|
|
71
|
+
* nodeModulesPrefix tracks the import map path prefix for nested deps
|
|
72
|
+
* (e.g., './node_modules' for root, './node_modules/@scope/pkg/node_modules' for nested).
|
|
71
73
|
*/
|
|
72
|
-
function collectDependencies(packageJsonPath, visited, dependencies, htmlDir, warnings, depPaths) {
|
|
74
|
+
function collectDependencies(packageJsonPath, visited, dependencies, htmlDir, nodeModulesPrefix, warnings, depPaths) {
|
|
73
75
|
try {
|
|
74
76
|
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
75
77
|
const packageDir = path.dirname(packageJsonPath);
|
|
@@ -84,7 +86,7 @@ function collectDependencies(packageJsonPath, visited, dependencies, htmlDir, wa
|
|
|
84
86
|
// Check if .dependencies has an override path for this package
|
|
85
87
|
const overrideVersion = dotDeps[depName];
|
|
86
88
|
const versionToUse = overrideVersion || depVersion;
|
|
87
|
-
// Resolve dependency path
|
|
89
|
+
// Resolve dependency path (real filesystem location)
|
|
88
90
|
let depPath = resolveDependencyPath(packageDir, depName, versionToUse);
|
|
89
91
|
if (!depPath) {
|
|
90
92
|
const warning = `Could not follow path for ${depName} (${versionToUse})`;
|
|
@@ -115,17 +117,20 @@ function collectDependencies(packageJsonPath, visited, dependencies, htmlDir, wa
|
|
|
115
117
|
const depPackageJson = JSON.parse(fs.readFileSync(depPackageJsonPath, 'utf-8'));
|
|
116
118
|
// Resolve entry point
|
|
117
119
|
const entryPoint = resolveEntryPoint(depPackageJson, depPath);
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
//
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (
|
|
124
|
-
|
|
120
|
+
const entryFile = entryPoint.startsWith('./') ? entryPoint.slice(2) : entryPoint;
|
|
121
|
+
// Generate import map path through node_modules (follows symlinks)
|
|
122
|
+
// Check if hoisted to top-level node_modules first
|
|
123
|
+
const topLevelDir = path.join(htmlDir, 'node_modules', depName);
|
|
124
|
+
let depPrefix;
|
|
125
|
+
if (fs.existsSync(topLevelDir)) {
|
|
126
|
+
depPrefix = `./node_modules/${depName}`;
|
|
125
127
|
}
|
|
126
|
-
|
|
128
|
+
else {
|
|
129
|
+
depPrefix = `${nodeModulesPrefix}/${depName}`;
|
|
130
|
+
}
|
|
131
|
+
dependencies.set(depName, `${depPrefix}/${entryFile}`);
|
|
127
132
|
// Recursively process this dependency's dependencies
|
|
128
|
-
collectDependencies(depPackageJsonPath, visited, dependencies, htmlDir, warnings, depPaths);
|
|
133
|
+
collectDependencies(depPackageJsonPath, visited, dependencies, htmlDir, `${depPrefix}/node_modules`, warnings, depPaths);
|
|
129
134
|
}
|
|
130
135
|
}
|
|
131
136
|
catch (e) {
|
|
@@ -141,7 +146,7 @@ function generateImportMap(packageJsonPath, htmlFilePath) {
|
|
|
141
146
|
const depPaths = new Set();
|
|
142
147
|
const warnings = [];
|
|
143
148
|
// Recursively collect all dependencies
|
|
144
|
-
collectDependencies(packageJsonPath, visited, dependencies, htmlDir, warnings, depPaths);
|
|
149
|
+
collectDependencies(packageJsonPath, visited, dependencies, htmlDir, './node_modules', warnings, depPaths);
|
|
145
150
|
result.depDirs = Array.from(depPaths);
|
|
146
151
|
// Convert Map to plain object for JSON
|
|
147
152
|
const imports = {};
|