Skip to content

Commit eb6d49c

Browse files
committed
Add providers.json output plugin
1 parent 1204f26 commit eb6d49c

File tree

3 files changed

+45
-1
lines changed

3 files changed

+45
-1
lines changed

docusaurus.config.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ const config: Config = {
7979
},
8080
],
8181
'docusaurus-plugin-sass',
82-
'./src/plugins/create-versions-json.ts'
82+
'./src/plugins/create-versions-json.ts',
83+
'./src/plugins/create-providers-json.ts'
8384
],
8485
themes: ["docusaurus-theme-openapi-docs"],
8586

src/plugins/create-providers-json.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import fs from 'fs';
2+
import path from 'path';
3+
import { LoadContext, Plugin, PluginOptions } from '@docusaurus/types';
4+
import logger from '@docusaurus/logger';
5+
import Module from 'module';
6+
7+
const createProvidersJsonPlugin = (context: LoadContext, options: PluginOptions): Plugin => {
8+
return {
9+
name: 'docusaurus-plugin-create-providers-json',
10+
11+
async postBuild({ outDir, routes, plugins }) {
12+
const originalResolveFilename = Module._resolveFilename
13+
14+
// This is a hack to allow us to import a custom module instead of the normal translation module
15+
Module._resolveFilename = function (request, parent, isMain, options) {
16+
if (request == '@docusaurus/Translate') {
17+
request = path.resolve(__dirname, 'custom_modules', 'translate.ts');
18+
}
19+
return originalResolveFilename.call(this, request, parent, isMain, options);
20+
};
21+
22+
// Import the providers data
23+
const { providersData } = await import('../data/providers');
24+
25+
// Restore the original resolve function
26+
Module._resolveFilename = originalResolveFilename
27+
28+
const providersFilePath = path.join(outDir, 'data/providers.json');
29+
30+
fs.mkdirSync(path.dirname(providersFilePath), { recursive: true });
31+
32+
fs.writeFileSync(providersFilePath, JSON.stringify(providersData, null, 2), 'utf-8');
33+
34+
logger.success(`Created providers.json file at ${providersFilePath}`);
35+
}
36+
};
37+
};
38+
39+
export default createProvidersJsonPlugin;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// This is a fake module that simulates @docusaurus/Translate
2+
export function translate (data) {
3+
return data.message
4+
}

0 commit comments

Comments
 (0)