3 * Copyright 2024 Google Inc.
4 * SPDX-License-Identifier: Apache-2.0
7 /* eslint-disable import/order */
9 import {copyFile, readFile, writeFile} from 'fs/promises';
11 import {docgen, spliceIntoSection} from '@puppeteer/docgen';
12 import {execa} from 'execa';
13 import {task} from 'hereby';
14 import semver from 'semver';
16 export const docsNgSchematicsTask = task({
17 name: 'docs:ng-schematics',
19 const readme = await readFile('packages/ng-schematics/README.md', 'utf-8');
20 await writeFile('docs/integrations/ng-schematics.md', readme);
25 * This logic should match the one in `website/docusaurus.config.js`.
27 function getApiUrl(version) {
28 if (semver.gte(version, '19.3.0')) {
29 return `https://github.com/puppeteer/puppeteer/blob/puppeteer-${version}/docs/api/index.md`;
30 } else if (semver.gte(version, '15.3.0')) {
31 return `https://github.com/puppeteer/puppeteer/blob/${version}/docs/api/index.md`;
33 return `https://github.com/puppeteer/puppeteer/blob/${version}/docs/api.md`;
37 export const docsChromiumSupportTask = task({
38 name: 'docs:chromium-support',
40 const content = await readFile('docs/chromium-support.md', {
43 const {versionsPerRelease} = await import('./versions.js');
45 for (const [chromiumVersion, puppeteerVersion] of versionsPerRelease) {
46 if (puppeteerVersion === 'NEXT') {
49 if (semver.gte(puppeteerVersion, '20.0.0')) {
51 ` * [Chrome for Testing](https://developer.chrome.com/blog/chrome-for-testing/) ${chromiumVersion} - [Puppeteer ${puppeteerVersion}](${getApiUrl(
57 ` * Chromium ${chromiumVersion} - [Puppeteer ${puppeteerVersion}](${getApiUrl(
64 'docs/chromium-support.md',
65 spliceIntoSection('version', content, buffer.join('\n'))
70 export const docsTask = task({
72 dependencies: [docsNgSchematicsTask, docsChromiumSupportTask],
75 await copyFile('README.md', 'docs/index.md');
77 // Generate documentation
78 for (const [name, folder] of [
79 ['browsers', 'browsers-api'],
82 docgen(`docs/${name}.api.json`, `docs/${folder}`);
85 // Update main @puppeteer/browsers page.
86 const readme = await readFile('packages/browsers/README.md', 'utf-8');
87 const index = await readFile('docs/browsers-api/index.md', 'utf-8');
89 'docs/browsers-api/index.md',
90 index.replace('# API Reference', readme)
94 await execa('prettier', ['--ignore-path', 'none', '--write', 'docs']);