Skip to content

Commit 86a008e

Browse files
feat: support progress display generation pdf
1 parent 58bd0fe commit 86a008e

File tree

9 files changed

+67
-15
lines changed

9 files changed

+67
-15
lines changed

packages/vuepress-plugin-export-pdf-v2/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
"@vuepress/utils": "2.0.0-beta.24",
5656
"bundle-require": "^3.0.4",
5757
"cac": "^6.7.12",
58+
"cli-progress": "^3.11.2",
5859
"debug": "^4.3.4",
5960
"envinfo": "^7.8.1",
6061
"multimatch": "^6.0.0",
@@ -63,6 +64,7 @@
6364
"semver": "^7.3.7"
6465
},
6566
"devDependencies": {
67+
"@types/cli-progress": "^3.11.0",
6668
"@types/envinfo": "^7.8.1",
6769
"@types/semver": "^7.3.10",
6870
"vuepress": "^2.0.0-beta.49"

packages/vuepress-plugin-export-pdf-v2/src/utils/generatePdf.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import type { DevApp } from "vuepress";
22
import type { PDFOptions, PuppeteerLaunchOptions } from "puppeteer";
3-
import { chalk, fs, logger, path } from "@vuepress/utils";
3+
import { chalk, fs, path } from "@vuepress/utils";
44
import puppeteer from "puppeteer";
55
import type { UserSorter } from "../configs";
66

7-
import { filterRoute } from "../utils";
7+
import { filterRoute, singleProgressBar } from "../utils";
88
import { mergePDF } from "./mergePDF";
99

1010
interface IGeneratePdfOptions {
@@ -54,6 +54,9 @@ export const generatePdf = async(ctx: DevApp, {
5454
};
5555
});
5656

57+
const singleBar = singleProgressBar(`Generated Progress [{bar}] {percentage}%({value}/{total}) || ${yellow("{title}")} ${gray("{url}")}`);
58+
singleBar.start(normalizePages.length, 0);
59+
5760
const browser = await puppeteer.launch(puppeteerLaunchOptions);
5861

5962
for (const { location, pagePath, url, title } of normalizePages) {
@@ -71,13 +74,15 @@ export const generatePdf = async(ctx: DevApp, {
7174
...pdfOptions,
7275
});
7376

74-
const pathUrl = gray(`${url}`);
75-
76-
logger.success(`Generated ${yellow(title)} ${pathUrl}`);
77-
7877
browserPage.close();
78+
79+
singleBar.increment(1, {
80+
title,
81+
url,
82+
});
7983
}
8084

85+
singleBar.stop();
8186
await mergePDF(normalizePages, outFile, outDir);
8287

8388
await browser.close();

packages/vuepress-plugin-export-pdf-v2/src/utils/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ export * from "./generatePdf";
44
export * from "./filterRoute";
55
export * from "./checkEnv";
66
export * from "./mergePDF";
7+
export * from "./progress";
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import cliProgress from "cli-progress";
2+
3+
export const singleProgressBar = (format = "Progress |" + "{bar}" + "| {percentage} % || {value} / {total}", preset = cliProgress.Presets.shades_classic) => {
4+
return new cliProgress.Bar({
5+
format,
6+
}, preset);
7+
};

packages/vuepress-plugin-export-pdf/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
"@vuepress/utils": "2.0.0-beta.24",
5555
"bundle-require": "^3.0.4",
5656
"cac": "^6.7.12",
57+
"cli-progress": "^3.11.2",
5758
"debug": "^4.3.4",
5859
"envinfo": "^7.8.1",
5960
"multimatch": "^6.0.0",
@@ -63,6 +64,7 @@
6364
},
6465
"devDependencies": {
6566
"@condorhero/vuepress-types": "workspace:^",
67+
"@types/cli-progress": "^3.11.0",
6668
"@types/envinfo": "^7.8.1",
6769
"@types/semver": "^7.3.10",
6870
"vuepress": "^1.9.7"

packages/vuepress-plugin-export-pdf/src/utils/generatePdf.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import type { Context } from "vuepress";
22
import type { PDFOptions, PuppeteerLaunchOptions } from "puppeteer";
3-
import { chalk, fs, logger, path } from "@vuepress/utils";
3+
import { chalk, fs, path } from "@vuepress/utils";
44
import puppeteer from "puppeteer";
55
import type { UserSorter } from "../configs";
66

7-
import { filterRoute } from "../utils";
7+
import { filterRoute, singleProgressBar } from "../utils";
88
import { mergePDF } from "./mergePDF";
99

1010
interface IGeneratePdfOptions {
@@ -54,6 +54,9 @@ export const generatePdf = async(ctx: Context, {
5454
};
5555
});
5656

57+
const singleBar = singleProgressBar(`Generated Progress [{bar}] {percentage}%({value}/{total}) || ${yellow("{title}")} ${gray("{url}")}`);
58+
singleBar.start(normalizePages.length, 0);
59+
5760
const browser = await puppeteer.launch(puppeteerLaunchOptions);
5861

5962
for (const { location, pagePath, url, title } of normalizePages) {
@@ -71,13 +74,15 @@ export const generatePdf = async(ctx: Context, {
7174
...pdfOptions,
7275
});
7376

74-
const pathUrl = gray(`${url}`);
75-
76-
logger.success(`Generated ${yellow(title)} ${pathUrl}`);
77-
7877
browserPage.close();
78+
79+
singleBar.increment(1, {
80+
title,
81+
url,
82+
});
7983
}
8084

85+
singleBar.stop();
8186
await mergePDF(normalizePages, outFile, outDir);
8287

8388
await browser.close();

packages/vuepress-plugin-export-pdf/src/utils/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ export * from "./generatePdf";
44
export * from "./filterRoute";
55
export * from "./checkEnv";
66
export * from "./mergePDF";
7+
export * from "./progress";
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import cliProgress from "cli-progress";
2+
3+
export const singleProgressBar = (format = "Progress |" + "{bar}" + "| {percentage} % || {value} / {total}", preset = cliProgress.Presets.shades_classic) => {
4+
return new cliProgress.Bar({
5+
format,
6+
}, preset);
7+
};

pnpm-lock.yaml

Lines changed: 25 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)