Browse Source

feat(docs): Add last-modified dates to documentation pages

Integrate the new last-modified dates feature from @vendure-io/docs-provider
to show accurate "last edited" dates on documentation pages. Dates are
extracted from git history at build time via a new generate-dates script.
David Höck 1 day ago
parent
commit
39d1d02335
6 changed files with 45 additions and 12 deletions
  1. 5 0
      docs/.gitignore
  2. 6 6
      docs/package-lock.json
  3. 6 3
      docs/package.json
  4. 15 0
      docs/scripts/generate-dates.ts
  5. 1 1
      docs/scripts/test-mdx.ts
  6. 12 2
      docs/src/manifest.ts

+ 5 - 0
docs/.gitignore

@@ -7,3 +7,8 @@
 # Misc
 .DS_Store
 npm-debug.log*
+
+# Generated files
+src/dates.generated.ts
+src/*.js
+scripts/*.js

+ 6 - 6
docs/package-lock.json

@@ -1,14 +1,14 @@
 {
     "name": "@vendure/docs",
-    "version": "0.0.0-202601211609",
+    "version": "0.0.0-202601221213",
     "lockfileVersion": 3,
     "requires": true,
     "packages": {
         "": {
             "name": "@vendure/docs",
-            "version": "0.0.0-202601211609",
+            "version": "0.0.0-202601221213",
             "dependencies": {
-                "@vendure-io/docs-provider": "^0.7.0"
+                "@vendure-io/docs-provider": "^0.8.2"
             },
             "devDependencies": {
                 "rimraf": "^5.0.5",
@@ -591,9 +591,9 @@
             "license": "ISC"
         },
         "node_modules/@vendure-io/docs-provider": {
-            "version": "0.7.0",
-            "resolved": "https://registry.npmjs.org/@vendure-io/docs-provider/-/docs-provider-0.7.0.tgz",
-            "integrity": "sha512-UdCrugyFtEA4Pnw6AbABAx4t4iuR1V+AIGJ7oueIQzcwaX2fvim5/ZtBQkkCfsgPm+oUv0Cx7KdkQBhTeq6Hxg==",
+            "version": "0.8.2",
+            "resolved": "https://registry.npmjs.org/@vendure-io/docs-provider/-/docs-provider-0.8.2.tgz",
+            "integrity": "sha512-UczT4Fv/m9y4bYJyC7PnRXQnbu7Me6s8/cjYQ3XuTxVAyeUGZymBFeG4BZIe9AI8GziGiQJJwNIYeyyJfHajJA==",
             "license": "MIT",
             "dependencies": {
                 "@mdx-js/mdx": "^3.0.0",

+ 6 - 3
docs/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@vendure/docs",
-    "version": "0.0.0-202601211609",
+    "version": "0.0.0-202601221213",
     "type": "module",
     "main": "dist/index.js",
     "types": "dist/index.d.ts",
@@ -14,19 +14,22 @@
     "files": [
         "dist",
         "docs",
+        "src",
         "README.md"
     ],
     "scripts": {
+        "generate-dates": "tsx scripts/generate-dates.ts",
+        "prebuild": "npm run generate-dates",
         "build": "rimraf dist && tsc -p ./tsconfig.build.json",
         "prepublishOnly": "npm run test:mdx && npm run build",
         "publish:local": "npm version 0.0.0-$(date +%Y%m%d%H%M) --no-git-tag-version && npm publish",
         "publish:local:next": "npm version 0.0.0-$(date +%Y%m%d%H%M) --no-git-tag-version && npm publish --tag next",
         "test:mdx": "tsx scripts/test-mdx.ts",
         "test:mdx:verbose": "tsx scripts/test-mdx.ts --verbose",
-        "typecheck": "tsc"
+        "typecheck": "tsc --noEmit"
     },
     "dependencies": {
-        "@vendure-io/docs-provider": "^0.7.0"
+        "@vendure-io/docs-provider": "^0.8.2"
     },
     "devDependencies": {
         "rimraf": "^5.0.5",

+ 15 - 0
docs/scripts/generate-dates.ts

@@ -0,0 +1,15 @@
+import { generateDatesFile } from '@vendure-io/docs-provider';
+import { dirname, join } from 'path';
+import { fileURLToPath } from 'url';
+
+const packageRoot = dirname(dirname(fileURLToPath(import.meta.url)));
+
+const result = await generateDatesFile({
+    docsDir: join(packageRoot, 'docs'),
+    outputPath: join(packageRoot, 'src/dates.generated.ts'),
+    gitCwd: packageRoot,
+});
+
+console.log(`Generated dates.generated.ts`);
+console.log(`  Files with dates: ${result.filesWithDates}`);
+console.log(`  Files skipped: ${result.filesSkipped}`);

+ 1 - 1
docs/scripts/test-mdx.ts

@@ -1,4 +1,4 @@
-import { manifest } from '../src/manifest';
+import { manifest } from '../src/manifest.js';
 import {
     testManifestMdx,
     formatTestReport,

+ 12 - 2
docs/src/manifest.ts

@@ -1,7 +1,8 @@
 import type { DocsPackageManifestInput, FileInfo } from '@vendure-io/docs-provider';
-import { createNestedNavigationFromFolder, resolveManifest } from '@vendure-io/docs-provider';
+import { applyLastModifiedDates, createNestedNavigationFromFolder, resolveManifest } from '@vendure-io/docs-provider';
 import { dirname, join } from 'path';
 import { fileURLToPath } from 'url';
+import { lastModifiedDates } from './dates.generated.js';
 
 const packageRoot = dirname(dirname(fileURLToPath(import.meta.url)));
 const file = (relativePath: string) => join(packageRoot, relativePath);
@@ -982,4 +983,13 @@ const manifestInput: DocsPackageManifestInput = {
     },
 };
 
-export const manifest = resolveManifest(manifestInput);
+const resolvedManifest = resolveManifest(manifestInput);
+
+export const manifest = {
+    ...resolvedManifest,
+    navigation: applyLastModifiedDates(
+        resolvedManifest.navigation,
+        lastModifiedDates,
+        { basePath: 'docs' }
+    ),
+};