Skip to content

Commit 90ce5d7

Browse files
Merge pull request #5 from gracefullight/codex/create-docusaurus-app-for-plugins-docs
docs: add ts prepare script and remove require.resolveWeak polyfill
2 parents ee17199 + 3da662f commit 90ce5d7

12 files changed

Lines changed: 12486 additions & 2973 deletions

File tree

.github/workflows/deploy-docs.yml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Deploy Docs
2+
3+
on:
4+
push:
5+
branches: ["main"]
6+
7+
permissions:
8+
contents: read
9+
pages: write
10+
id-token: write
11+
12+
concurrency:
13+
group: "pages"
14+
cancel-in-progress: true
15+
16+
jobs:
17+
build:
18+
runs-on: ubuntu-latest
19+
steps:
20+
- uses: actions/checkout@v4
21+
- uses: pnpm/action-setup@v3
22+
with:
23+
version: 10
24+
- uses: actions/setup-node@v4
25+
with:
26+
node-version: 22
27+
cache: "pnpm"
28+
- run: pnpm install --frozen-lockfile
29+
- run: pnpm --filter docs build
30+
- uses: actions/upload-pages-artifact@v3
31+
with:
32+
path: apps/docs/build
33+
34+
deploy:
35+
needs: build
36+
runs-on: ubuntu-latest
37+
environment:
38+
name: github-pages
39+
url: ${{ steps.deploy.outputs.page_url }}
40+
steps:
41+
- id: deploy
42+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ coverage
1212
.next/
1313
out/
1414
build
15+
.docusaurus
1516

1617
# misc
1718
.DS_Store
@@ -34,3 +35,9 @@ yarn-error.log*
3435

3536
packages/*/dist/
3637
packages/*/dist/*
38+
39+
# Ignore everything inside docs/ by default (generated content)
40+
apps/docs/docs/*
41+
apps/docs/docs/intro.md
42+
# But keep the placeholder file
43+
!apps/docs/docs/.gitkeep
File renamed without changes.

apps/docs/docs/intro.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# @gracefullight/docusaurus-plugins
2+
3+
This monorepo contains a collection of plugins for [Docusaurus](https://docusaurus.io/) to enhance your documentation website. The following plugins are included:
4+
5+
- [@gracefullight/docusaurus-plugin-baidu-analytics](https://www.npmjs.com/package/@gracefullight/docusaurus-plugin-baidu-analytics)
6+
- [@gracefullight/docusaurus-plugin-channelio](https://www.npmjs.com/package/@gracefullight/docusaurus-plugin-channelio)
7+
- [@gracefullight/docusaurus-plugin-chatra](https://www.npmjs.com/package/@gracefullight/docusaurus-plugin-chatra)
8+
- [@gracefullight/docusaurus-plugin-cloudflare-analytics](https://www.npmjs.com/package/@gracefullight/docusaurus-plugin-cloudflare-analytics)
9+
- [@gracefullight/docusaurus-plugin-gitter](https://www.npmjs.com/package/@gracefullight/docusaurus-plugin-gitter)
10+
- [@gracefullight/docusaurus-plugin-google-adsense](https://www.npmjs.com/package/@gracefullight/docusaurus-plugin-google-adsense)
11+
- [@gracefullight/docusaurus-plugin-intercom](https://www.npmjs.com/package/@gracefullight/docusaurus-plugin-intercom)
12+
- [@gracefullight/docusaurus-plugin-meta-pixel](https://www.npmjs.com/package/@gracefullight/docusaurus-plugin-meta-pixel)
13+
- [@gracefullight/docusaurus-plugin-microsoft-clarity](https://www.npmjs.com/package/@gracefullight/docusaurus-plugin-microsoft-clarity)
14+
- [@gracefullight/docusaurus-plugin-naver-analytics](https://www.npmjs.com/package/@gracefullight/docusaurus-plugin-naver-analytics)
15+
- [@gracefullight/docusaurus-plugin-sentry](https://www.npmjs.com/package/@gracefullight/docusaurus-plugin-sentry)
16+
- [@gracefullight/docusaurus-plugin-tailwind](https://www.npmjs.com/package/@gracefullight/docusaurus-plugin-tailwind)
17+
- [@gracefullight/docusaurus-plugin-vercel-analytics](https://www.npmjs.com/package/@gracefullight/docusaurus-plugin-vercel-analytics)
18+
- [@gracefullight/docusaurus-plugin-yandex-metrica](https://www.npmjs.com/package/@gracefullight/docusaurus-plugin-yandex-metrica)
19+
20+
## Installation
21+
22+
You can install these plugins via pnpm:
23+
24+
```bash
25+
pnpm add @gracefullight/docusaurus-plugin-${PLUGIN_NAME}
26+
```
27+
28+
## Usage
29+
30+
To use these plugins, you will need to configure them in your Docusaurus `docusaurus.config.js` file. Please refer to the individual plugin's README for specific configuration instructions.
31+
32+
## Contributing
33+
34+
Contributions are welcome. If you find a bug or want to suggest a new feature, please open an issue or a pull request. To contribute a new plugin, you can use the command `pnpm gen plugin`.
35+
36+
## License
37+
38+
This repository is licensed under the [MIT License](#license).

apps/docs/docusaurus.config.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import type { ThemeConfig } from "@docusaurus/preset-classic";
2+
import type { Config } from "@docusaurus/types";
3+
4+
const themeConfig: ThemeConfig = {
5+
navbar: {
6+
items: [
7+
{
8+
"aria-label": "GitHub repository",
9+
className: "header-github-link",
10+
href: "https://github.com/gracefullight/docusaurus-plugins",
11+
position: "right",
12+
},
13+
],
14+
title: "docusaurus-plugins",
15+
},
16+
};
17+
18+
const config: Config = {
19+
baseUrl: "/docusaurus-plugins/",
20+
favicon: "img/favicon.ico",
21+
onBrokenLinks: "throw",
22+
onBrokenMarkdownLinks: "warn",
23+
organizationName: "gracefullight",
24+
presets: [
25+
[
26+
"classic",
27+
{
28+
blog: false,
29+
docs: {
30+
routeBasePath: "/",
31+
sidebarPath: "./sidebars.ts",
32+
},
33+
},
34+
],
35+
],
36+
projectName: "docusaurus-plugins",
37+
themeConfig,
38+
title: "docusaurus-plugins",
39+
url: "https://gracefullight.github.io",
40+
};
41+
42+
export default config;

apps/docs/package.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"dependencies": {
3+
"@docusaurus/core": "3.8.1",
4+
"@docusaurus/preset-classic": "3.8.1",
5+
"@docusaurus/theme-classic": "^3.8.1",
6+
"@mdx-js/react": "^3.1.1",
7+
"react": "^19.1.1",
8+
"react-dom": "^19.1.1"
9+
},
10+
"devDependencies": {
11+
"@docusaurus/module-type-aliases": "^3.8.1",
12+
"@docusaurus/tsconfig": "^3.8.1",
13+
"@docusaurus/types": "^3.8.1",
14+
"@gracefullight-docusaurus/tsconfig": "workspace:^",
15+
"@types/react": "^19.1",
16+
"@types/react-dom": "^19.1"
17+
},
18+
"name": "@gracefullight/docusaurus-plugin-docs",
19+
"private": true,
20+
"scripts": {
21+
"build": "pnpm prepare-docs && docusaurus build",
22+
"dev": "pnpm prepare-docs && docusaurus start",
23+
"prepare-docs": "tsx ./scripts/prepare-docs.ts"
24+
}
25+
}

apps/docs/scripts/prepare-docs.ts

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import {
2+
access,
3+
copyFile,
4+
mkdir,
5+
readdir,
6+
readFile,
7+
rm,
8+
writeFile,
9+
} from "node:fs/promises";
10+
import { join } from "node:path";
11+
12+
async function main() {
13+
const monorepoRoot = join(process.cwd(), "..", "..");
14+
const packagesRoot = join(monorepoRoot, "packages");
15+
const outDir = join(process.cwd(), "docs", "plugins");
16+
17+
await rm(outDir, { force: true, recursive: true });
18+
await mkdir(outDir, { recursive: true });
19+
20+
// Copy the monorepo README as the docs intro page
21+
const repoReadme = join(monorepoRoot, "README.md");
22+
const introDoc = join(process.cwd(), "docs", "intro.md");
23+
try {
24+
await access(repoReadme);
25+
const raw = await readFile(repoReadme, "utf8");
26+
// Rewrite repo-relative links that would 404 on the docs site
27+
const rewritten = raw.replace(
28+
/\((?:\.\/)?LICENSE(?:\.md)?\)/g,
29+
"(#license)",
30+
);
31+
await writeFile(introDoc, rewritten, "utf8");
32+
} catch {
33+
// ignore if the root README does not exist
34+
}
35+
36+
// Copy each package README under docs/plugins
37+
const packages = await readdir(packagesRoot, { withFileTypes: true });
38+
39+
for (const dir of packages) {
40+
if (!dir.isDirectory() || dir.name === "tsconfig") continue;
41+
const readme = join(packagesRoot, dir.name, "README.md");
42+
try {
43+
await access(readme);
44+
await copyFile(readme, join(outDir, `${dir.name}.md`));
45+
} catch {
46+
/* ignore */
47+
}
48+
}
49+
}
50+
51+
main().catch((err) => {
52+
console.error(err);
53+
process.exit(1);
54+
});

apps/docs/sidebars.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import type { SidebarsConfig } from "@docusaurus/plugin-content-docs";
2+
3+
const sidebars: SidebarsConfig = {
4+
docs: ["intro", { dirName: "plugins", type: "autogenerated" }],
5+
};
6+
7+
export default sidebars;

apps/docs/src/pages/index.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { Redirect } from "@docusaurus/router";
2+
import useBaseUrl from "@docusaurus/useBaseUrl";
3+
4+
export default function Home() {
5+
const to = useBaseUrl("/intro");
6+
return <Redirect to={to} />;
7+
}

apps/docs/tsconfig.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"compilerOptions": {
3+
"baseUrl": ".",
4+
"lib": ["DOM", "ESNext"],
5+
"strict": true,
6+
"types": [
7+
"node",
8+
"@docusaurus/module-type-aliases",
9+
"@docusaurus/theme-classic"
10+
]
11+
},
12+
"exclude": [".docusaurus", "build"],
13+
"extends": "@docusaurus/tsconfig"
14+
}

0 commit comments

Comments
 (0)