@portosaur/cli 0.6.3 → 0.8.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@portosaur/cli",
3
- "version": "0.6.3",
3
+ "version": "0.8.0",
4
4
  "description": "CLI for Portosaur - The static Personal portfolio site generator.",
5
5
  "license": "GPL-3.0-only",
6
6
  "author": "soymadip",
@@ -26,9 +26,9 @@
26
26
  },
27
27
  "types": "./src/index.d.ts",
28
28
  "dependencies": {
29
- "@portosaur/core": "^0.6.3",
30
- "@portosaur/logger": "^0.6.3",
31
- "@portosaur/wizard": "^0.6.3",
29
+ "@portosaur/core": "^0.8.0",
30
+ "@portosaur/logger": "^0.8.0",
31
+ "@portosaur/wizard": "^0.8.0",
32
32
  "commander": "^13.1.0",
33
33
  "js-yaml": "^4.1.1"
34
34
  }
@@ -1,15 +1,15 @@
1
1
  # yaml-language-server: $schema=https://soymadip.github.io/portosaur/conf-schema.json
2
+ #
2
3
  # Portosaur Project Configuration
3
- # This file is filled with example values
4
4
  # Check Config Docs: https://soymadip.is-a.dev/portosaur/guide/config
5
5
 
6
6
  # Site Metadata & SEO
7
7
  site:
8
- title: "{{fullName}}"
9
- tagline: "Short description about you, your passion, your goals etc."
8
+ title: null # Defaults to {{homepage.hero.title}}
9
+ tagline: null # Defaults to {{homepage.hero.desc}}
10
10
 
11
- favicon: "{{portoRoot}}/assets/img/svg/icon.svg"
12
- social_card: "{{portoRoot}}/assets/img/social-card.jpeg"
11
+ favicon: null # By default, generates from {{home_page.hero.profile_pic}}
12
+ # social_card: "{{portoRoot}}/assets/img/social-card.jpeg"
13
13
 
14
14
  # Auto set if deploying in Github/GitLab Pages
15
15
  url: "auto"
@@ -18,20 +18,27 @@ site:
18
18
  # UI/UX & Theme Behavior
19
19
  theme:
20
20
  appearance:
21
- dark_mode: true
22
- disable_switch: false
21
+ default_theme: dark # dark | light
22
+ show_theme_switch: true
23
+ disable_project_link: false
24
+
25
+ footer:
26
+ enable: true
27
+ message: null
28
+ disable_project_link: false
23
29
 
24
30
  navigation:
31
+ breadcrumbs: true
25
32
  collapsable_sidebar: true
26
33
  hide_navbar_on_scroll: true
27
34
 
28
35
  # Page Content & Sections
29
36
  home_page:
30
37
  hero:
31
- title: null # Fallback to {{site.title}}
38
+ title: "{{fullName}}"
32
39
  profession: "Your Profession"
33
- desc: null # Fallback to {{site.tagline}}
34
- profile_pic: null # Fallback to {{site.favicon}}
40
+ desc: "Short description about you, your passion, your goals etc."
41
+ profile_pic: "{{portoRoot}}/assets/img/svg/icon.svg"
35
42
 
36
43
  social:
37
44
  - name: "LinkedIn"
@@ -2,7 +2,7 @@ import fs from "fs";
2
2
  import path from "path";
3
3
  import { spawn } from "child_process";
4
4
  import { createRequire } from "module";
5
- import { hasCommand } from "@portosaur/core";
5
+ import { hasCommand, getPortoDotDir } from "@portosaur/core";
6
6
 
7
7
  /**
8
8
  * Generates a static Docusaurus config file by evaluating the Portosaur config
@@ -15,7 +15,7 @@ import { hasCommand } from "@portosaur/core";
15
15
  * @returns {string} The path to the generated config file.
16
16
  */
17
17
  export function writeConfigShim(UserRoot, portoPaths, context = {}) {
18
- const dotDir = path.join(UserRoot, ".docusaurus", "portosaur");
18
+ const dotDir = getPortoDotDir(UserRoot);
19
19
 
20
20
  if (!fs.existsSync(dotDir)) {
21
21
  fs.mkdirSync(dotDir, { recursive: true });
@@ -174,6 +174,30 @@ export async function runDocusaurus(
174
174
 
175
175
  args.push(...extraArgs);
176
176
 
177
+ // Strip the hardcoded Docusaurus generator tag from its internal HTML templates
178
+ // so that only the Portosaur metadata tag is rendered in the final output.
179
+ try {
180
+ const coreLibDir = path.resolve(path.dirname(docusaurusBin), "../lib");
181
+ const templates = [
182
+ path.join(coreLibDir, "webpack/templates/dev.html.template.ejs"),
183
+ path.join(coreLibDir, "ssg/ssgTemplate.html.js"),
184
+ ];
185
+ for (const tpl of templates) {
186
+ if (fs.existsSync(tpl)) {
187
+ let content = fs.readFileSync(tpl, "utf8");
188
+ const newContent = content.replace(
189
+ /<meta name="generator" content="Docusaurus[^"]*">\n?/g,
190
+ "",
191
+ );
192
+ if (content !== newContent) {
193
+ fs.writeFileSync(tpl, newContent, "utf8");
194
+ }
195
+ }
196
+ }
197
+ } catch (err) {
198
+ // Ignore permissions or missing file errors
199
+ }
200
+
177
201
  // Use bun when available for faster builds, fall back to node.
178
202
  // If node isn't installed, fallback to bun gracefully.
179
203
  let runtime = "node";