refactor(v2): shift generated files out of core into website dir

This commit is contained in:
Yangshun Tay 2019-02-24 15:20:58 -08:00
parent d5722f0a54
commit 211e04f409
8 changed files with 37 additions and 11 deletions

2
.gitignore vendored
View file

@ -9,4 +9,4 @@ node_modules
yarn-error.log yarn-error.log
build build
__generated__ .docusaurus

View file

@ -1,5 +1,5 @@
__generated__
__fixtures__ __fixtures__
dist dist
node_modules node_modules
build build
.docusaurus

View file

@ -1,4 +1,3 @@
__generated__
__fixtures__ __fixtures__
dist dist
node_modules node_modules

10
v2/lib/constants.js Normal file
View file

@ -0,0 +1,10 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
module.exports = {
GENERATED_FILES_DIR_NAME: '.docusaurus',
};

View file

@ -5,6 +5,7 @@
* LICENSE file in the root directory of this source tree. * LICENSE file in the root directory of this source tree.
*/ */
const fs = require('fs-extra');
const path = require('path'); const path = require('path');
const loadBlog = require('./blog'); const loadBlog = require('./blog');
const loadConfig = require('./config'); const loadConfig = require('./config');
@ -14,18 +15,30 @@ const loadPages = require('./pages');
const loadTheme = require('./theme'); const loadTheme = require('./theme');
const {generate} = require('./utils'); const {generate} = require('./utils');
const genRoutesConfig = require('./routes'); const genRoutesConfig = require('./routes');
const constants = require('../constants');
module.exports = async function load(siteDir) { module.exports = async function load(siteDir) {
const generatedFilesDir = path.resolve(
siteDir,
constants.GENERATED_FILES_DIR_NAME,
);
fs.ensureDirSync(generatedFilesDir);
// Site Config - @tested // Site Config - @tested
const siteConfig = loadConfig.loadConfig(siteDir); const siteConfig = loadConfig.loadConfig(siteDir);
await generate( await generate(
generatedFilesDir,
loadConfig.configFileName, loadConfig.configFileName,
`export default ${JSON.stringify(siteConfig, null, 2)};`, `export default ${JSON.stringify(siteConfig, null, 2)};`,
); );
// Env - @tested // Env - @tested
const env = loadEnv({siteDir, siteConfig}); const env = loadEnv({siteDir, siteConfig});
await generate('env.js', `export default ${JSON.stringify(env, null, 2)};`); await generate(
generatedFilesDir,
'env.js',
`export default ${JSON.stringify(env, null, 2)};`,
);
// Docs // Docs
const docsDir = path.resolve(siteDir, '..', siteConfig.customDocsPath); const docsDir = path.resolve(siteDir, '..', siteConfig.customDocsPath);
@ -36,10 +49,12 @@ module.exports = async function load(siteDir) {
siteConfig, siteConfig,
}); });
await generate( await generate(
generatedFilesDir,
'docsMetadatas.js', 'docsMetadatas.js',
`export default ${JSON.stringify(docsMetadatas, null, 2)};`, `export default ${JSON.stringify(docsMetadatas, null, 2)};`,
); );
await generate( await generate(
generatedFilesDir,
'docsSidebars.js', 'docsSidebars.js',
`export default ${JSON.stringify(docsSidebars, null, 2)};`, `export default ${JSON.stringify(docsSidebars, null, 2)};`,
); );
@ -60,6 +75,7 @@ module.exports = async function load(siteDir) {
const pagesDir = path.resolve(siteDir, 'pages'); const pagesDir = path.resolve(siteDir, 'pages');
const pagesMetadatas = await loadPages({pagesDir, env, siteConfig}); const pagesMetadatas = await loadPages({pagesDir, env, siteConfig});
await generate( await generate(
generatedFilesDir,
'pagesMetadatas.js', 'pagesMetadatas.js',
`export default ${JSON.stringify(pagesMetadatas, null, 2)};`, `export default ${JSON.stringify(pagesMetadatas, null, 2)};`,
); );
@ -68,6 +84,7 @@ module.exports = async function load(siteDir) {
const blogDir = path.resolve(siteDir, 'blog'); const blogDir = path.resolve(siteDir, 'blog');
const blogMetadatas = await loadBlog({blogDir, env, siteConfig}); const blogMetadatas = await loadBlog({blogDir, env, siteConfig});
await generate( await generate(
generatedFilesDir,
'blogMetadatas.js', 'blogMetadatas.js',
`export default ${JSON.stringify(blogMetadatas, null, 2)};`, `export default ${JSON.stringify(blogMetadatas, null, 2)};`,
); );
@ -99,11 +116,12 @@ module.exports = async function load(siteDir) {
sourceToMetadata, sourceToMetadata,
versionedDir, versionedDir,
translatedDir, translatedDir,
generatedFilesDir,
}; };
// Generate React Router Config. // Generate React Router Config.
const routesConfig = await genRoutesConfig(props); const routesConfig = await genRoutesConfig(props);
await generate('routes.js', routesConfig); await generate(generatedFilesDir, 'routes.js', routesConfig);
return props; return props;
}; };

View file

@ -10,14 +10,11 @@ const fm = require('front-matter');
const escapeStringRegexp = require('escape-string-regexp'); const escapeStringRegexp = require('escape-string-regexp');
const fs = require('fs-extra'); const fs = require('fs-extra');
const genPath = path.resolve(__dirname, '../core/__generated__');
fs.ensureDirSync(genPath);
const genCache = new Map(); const genCache = new Map();
async function generate(file, content) { async function generate(generatedFilesDir, file, content) {
const cached = genCache.get(file); const cached = genCache.get(file);
if (cached !== content) { if (cached !== content) {
await fs.writeFile(path.join(genPath, file), content); await fs.writeFile(path.join(generatedFilesDir, file), content);
genCache.set(file, content); genCache.set(file, content);
} }
} }

View file

@ -45,6 +45,7 @@ module.exports = function createBaseConfig(props, isServer) {
versionedDir, versionedDir,
translatedDir, translatedDir,
baseUrl, baseUrl,
generatedFilesDir,
} = props; } = props;
const config = new Config(); const config = new Config();
@ -69,7 +70,7 @@ module.exports = function createBaseConfig(props, isServer) {
.set('@docs', docsDir) .set('@docs', docsDir)
.set('@pages', pagesDir) .set('@pages', pagesDir)
.set('@build', outDir) .set('@build', outDir)
.set('@generated', path.resolve(__dirname, '../core/__generated__')) .set('@generated', generatedFilesDir)
.set('@core', path.resolve(__dirname, '../core')) .set('@core', path.resolve(__dirname, '../core'))
.set('@docusaurus', path.resolve(__dirname, '../docusaurus')) .set('@docusaurus', path.resolve(__dirname, '../docusaurus'))
.end() .end()

View file

@ -21,6 +21,7 @@
}, },
"scripts": { "scripts": {
"docusaurus": "node bin/docusaurus", "docusaurus": "node bin/docusaurus",
"start": "yarn docusaurus start ../v2-website",
"prettier": "prettier --config ../.prettierrc --write \"**/*.js\"", "prettier": "prettier --config ../.prettierrc --write \"**/*.js\"",
"lint": "eslint --cache \"{lib,bin,test}/**/*.js\"", "lint": "eslint --cache \"{lib,bin,test}/**/*.js\"",
"test": "jest --config test/jest.config.js" "test": "jest --config test/jest.config.js"