vike-lite 1.17.1 → 1.17.2

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.
Files changed (3) hide show
  1. package/README.md +2 -2
  2. package/dist/vite.mjs +40 -31
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -43,10 +43,10 @@ When set to `true`, at the end of each production build (client and server) the
43
43
 
44
44
  ```sh
45
45
 
46
- šŸ“¦ [Client bundle] package.json dependencies used (1):
46
+ šŸ“¦ [Client bundle] 1 dependencies used from package.json:
47
47
  - solid-js@^1.9.3
48
48
 
49
- šŸ“¦ [Server bundle] package.json dependencies used (2):
49
+ šŸ“¦ [Server bundle] 2 dependencies used from package.json:
50
50
  - solid-js@^1.9.3
51
51
  - hono@^4.12.31
52
52
  ```
package/dist/vite.mjs CHANGED
@@ -121,15 +121,18 @@ function findPackageJsonPath(startDir) {
121
121
  dir = parent;
122
122
  }
123
123
  }
124
- function extractPackageNameFromPath(moduleId) {
125
- const matches = [...moduleId.replaceAll("\\", "/").matchAll(/node_modules\/(@[^/]+\/[^/]+|[^/]+)/g)];
126
- if (matches.length === 0) return null;
127
- return matches[matches.length - 1][1];
128
- }
129
- function extractPackageNameFromImport(imp) {
130
- if (imp.startsWith(".") || imp.startsWith("/") || imp.startsWith("\0") || path.isAbsolute(imp) || imp.startsWith("node:")) return null;
131
- const parts = imp.split("/");
132
- return imp.startsWith("@") && parts.length > 1 ? `${parts[0]}/${parts[1]}` : parts[0];
124
+ function extractPkgName(id) {
125
+ const normalized = id.replaceAll("\\", "/");
126
+ const matches = [...normalized.matchAll(/(?:node_modules|\.yarn(?:\/__virtual__)?)\/(@[^/]+\/[^/]+|[^/]+)/g)];
127
+ if (matches.length > 0) {
128
+ const pkg = matches[matches.length - 1][1];
129
+ if (pkg !== ".pnpm") return pkg;
130
+ }
131
+ if (!normalized.startsWith(".") && !normalized.startsWith("/") && !normalized.includes(":")) {
132
+ const parts = normalized.split("/");
133
+ return normalized.startsWith("@") && parts.length > 1 ? `${parts[0]}/${parts[1]}` : parts[0];
134
+ }
135
+ return null;
133
136
  }
134
137
  //#endregion
135
138
  //#region src/vite/index.ts
@@ -167,10 +170,18 @@ function vikeLite({ pagesDir = "pages", apiPrefix = "/api", prerender = false, s
167
170
  const pkgJsonPath = findPackageJsonPath(viteConfigRoot);
168
171
  if (pkgJsonPath) {
169
172
  const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, "utf8"));
170
- projectDependencies = {
171
- ...pkgJson.dependencies,
172
- ...pkgJson.devDependencies,
173
- ...pkgJson.peerDependencies
173
+ projectDependencies = {};
174
+ for (const [k, v] of Object.entries(pkgJson.dependencies || {})) projectDependencies[k] = {
175
+ version: v,
176
+ type: ""
177
+ };
178
+ for (const [k, v] of Object.entries(pkgJson.devDependencies || {})) projectDependencies[k] = {
179
+ version: v,
180
+ type: "dev"
181
+ };
182
+ for (const [k, v] of Object.entries(pkgJson.peerDependencies || {})) if (!projectDependencies[k]) projectDependencies[k] = {
183
+ version: v,
184
+ type: "peer"
174
185
  };
175
186
  }
176
187
  }
@@ -336,27 +347,25 @@ function vikeLite({ pagesDir = "pages", apiPrefix = "/api", prerender = false, s
336
347
  if (!printDependencies || !projectDependencies) return;
337
348
  const envName = this.environment.name;
338
349
  if (envName !== "client" && envName !== "ssr") return;
339
- const usedPackages = /* @__PURE__ */ new Set();
340
- for (const file of Object.values(bundle)) {
341
- if (file.type !== "chunk") continue;
342
- for (const moduleId of file.moduleIds) {
343
- const pkgName = extractPackageNameFromPath(moduleId);
344
- if (pkgName && projectDependencies[pkgName] !== void 0) usedPackages.add(pkgName);
345
- }
346
- for (const imp of file.imports) {
347
- const pkgName = extractPackageNameFromImport(imp);
348
- if (pkgName && projectDependencies[pkgName] !== void 0) usedPackages.add(pkgName);
350
+ const usedDeps = /* @__PURE__ */ new Map();
351
+ for (const chunk of Object.values(bundle)) {
352
+ if (chunk.type !== "chunk") continue;
353
+ for (const id of chunk.moduleIds) {
354
+ const pkg = extractPkgName(id);
355
+ if (pkg && !pkg.startsWith("vike-lite") && Object.hasOwn(projectDependencies, pkg)) usedDeps.set(pkg, projectDependencies[pkg]);
349
356
  }
350
- for (const imp of file.dynamicImports) {
351
- const pkgName = extractPackageNameFromImport(imp);
352
- if (pkgName && projectDependencies[pkgName] !== void 0) usedPackages.add(pkgName);
357
+ for (const imp of [...chunk.imports, ...chunk.dynamicImports]) {
358
+ const pkg = extractPkgName(imp);
359
+ if (pkg && !pkg.startsWith("vike-lite") && Object.hasOwn(projectDependencies, pkg)) usedDeps.set(pkg, projectDependencies[pkg]);
353
360
  }
354
361
  }
355
- const label = envName === "client" ? "Client" : "Server";
356
- const sorted = [...usedPackages].sort();
357
- console.log(`šŸ“¦ [${label} bundle] package.json dependencies used (${sorted.length}):`);
358
- if (sorted.length === 0) console.log(` (None)`);
359
- else for (const dep of sorted) console.log(` - ${dep}@${projectDependencies[dep]}`);
362
+ const sorted = [...usedDeps.entries()].sort(([a], [b]) => a.localeCompare(b));
363
+ console.log(`\nšŸ“¦ [${envName === "client" ? "Client" : "Server"} bundle] ${sorted.length} dependencies used from package.json:`);
364
+ if (sorted.length === 0) console.log(" (None)");
365
+ else for (const [name, info] of sorted) {
366
+ const typeTag = info.type ? ` \u{1B}[33m[${info.type}]\u{1B}[0m` : "";
367
+ console.log(` - \u{1B}[36m${name}@${info.version}\u{1B}[0m${typeTag}`);
368
+ }
360
369
  },
361
370
  closeBundle: {
362
371
  order: "pre",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike-lite",
3
- "version": "1.17.1",
3
+ "version": "1.17.2",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",