@bobfrankston/importgen 0.1.22 → 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 -9
- 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,13 +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
|
-
// Generate path relative to HTML dir using actual resolved location
|
|
119
120
|
const entryFile = entryPoint.startsWith('./') ? entryPoint.slice(2) : entryPoint;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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}`;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
depPrefix = `${nodeModulesPrefix}/${depName}`;
|
|
130
|
+
}
|
|
131
|
+
dependencies.set(depName, `${depPrefix}/${entryFile}`);
|
|
123
132
|
// Recursively process this dependency's dependencies
|
|
124
|
-
collectDependencies(depPackageJsonPath, visited, dependencies, htmlDir, warnings, depPaths);
|
|
133
|
+
collectDependencies(depPackageJsonPath, visited, dependencies, htmlDir, `${depPrefix}/node_modules`, warnings, depPaths);
|
|
125
134
|
}
|
|
126
135
|
}
|
|
127
136
|
catch (e) {
|
|
@@ -137,7 +146,7 @@ function generateImportMap(packageJsonPath, htmlFilePath) {
|
|
|
137
146
|
const depPaths = new Set();
|
|
138
147
|
const warnings = [];
|
|
139
148
|
// Recursively collect all dependencies
|
|
140
|
-
collectDependencies(packageJsonPath, visited, dependencies, htmlDir, warnings, depPaths);
|
|
149
|
+
collectDependencies(packageJsonPath, visited, dependencies, htmlDir, './node_modules', warnings, depPaths);
|
|
141
150
|
result.depDirs = Array.from(depPaths);
|
|
142
151
|
// Convert Map to plain object for JSON
|
|
143
152
|
const imports = {};
|