sync-api-docs/sync-api-docs.js (35 lines of code) (raw):
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
// ***** EXPERIMENTAL *****
// Updates the API docs from the React Native source code.
'use strict';
const process = require('process');
const fs = require('fs-extra');
const path = require('path');
const extractDocsFromRN = require('./extractDocsFromRN');
const preprocessGeneratedApiDocs = require('./preprocessGeneratedApiDocs');
const generateMarkdown = require('./generateMarkdown');
const {titleToId} = require('./utils');
const DOCS_ROOT_DIR = path.resolve(__dirname, '..', 'docs');
async function generateApiDocs(rnPath) {
const apiDocs = await extractDocsFromRN(rnPath);
preprocessGeneratedApiDocs(apiDocs);
await Promise.all(
apiDocs.map(async ({component, file}, index) => {
if (!component.displayName) {
console.log(
`react-docgen data for ${path.basename(file)} was malformed, skipping`
);
return;
}
const id = titleToId(component.displayName);
const componentMarkdown = generateMarkdown(
{title: component.displayName, id: id},
component
);
const outFile = path.join(DOCS_ROOT_DIR, id + '.md');
console.log('Generated ' + outFile);
await fs.writeFile(outFile, componentMarkdown, 'utf8');
})
);
}
async function main(args) {
await generateApiDocs(args[0]);
}
main(process.argv.slice(2));