diff --git a/.gitignore b/.gitignore index cf65e31d09ae..b031ff47961d 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,4 @@ node_modules yarn-error.log build -__generated__ +.docusaurus diff --git a/.prettierignore b/.prettierignore index 85f4c013e1f0..d6e837be0cff 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,5 +1,5 @@ -__generated__ __fixtures__ dist node_modules build +.docusaurus \ No newline at end of file diff --git a/v2/.eslintignore b/v2/.eslintignore index 85f4c013e1f0..f4d280888c8d 100644 --- a/v2/.eslintignore +++ b/v2/.eslintignore @@ -1,4 +1,3 @@ -__generated__ __fixtures__ dist node_modules diff --git a/v2/lib/constants.js b/v2/lib/constants.js new file mode 100644 index 000000000000..9cebdb87dae1 --- /dev/null +++ b/v2/lib/constants.js @@ -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', +}; diff --git a/v2/lib/load/index.js b/v2/lib/load/index.js index 973fed100ca8..b602b0c035a8 100644 --- a/v2/lib/load/index.js +++ b/v2/lib/load/index.js @@ -5,6 +5,7 @@ * LICENSE file in the root directory of this source tree. */ +const fs = require('fs-extra'); const path = require('path'); const loadBlog = require('./blog'); const loadConfig = require('./config'); @@ -14,18 +15,30 @@ const loadPages = require('./pages'); const loadTheme = require('./theme'); const {generate} = require('./utils'); const genRoutesConfig = require('./routes'); +const constants = require('../constants'); module.exports = async function load(siteDir) { + const generatedFilesDir = path.resolve( + siteDir, + constants.GENERATED_FILES_DIR_NAME, + ); + fs.ensureDirSync(generatedFilesDir); + // Site Config - @tested const siteConfig = loadConfig.loadConfig(siteDir); await generate( + generatedFilesDir, loadConfig.configFileName, `export default ${JSON.stringify(siteConfig, null, 2)};`, ); // Env - @tested 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 const docsDir = path.resolve(siteDir, '..', siteConfig.customDocsPath); @@ -36,10 +49,12 @@ module.exports = async function load(siteDir) { siteConfig, }); await generate( + generatedFilesDir, 'docsMetadatas.js', `export default ${JSON.stringify(docsMetadatas, null, 2)};`, ); await generate( + generatedFilesDir, 'docsSidebars.js', `export default ${JSON.stringify(docsSidebars, null, 2)};`, ); @@ -60,6 +75,7 @@ module.exports = async function load(siteDir) { const pagesDir = path.resolve(siteDir, 'pages'); const pagesMetadatas = await loadPages({pagesDir, env, siteConfig}); await generate( + generatedFilesDir, 'pagesMetadatas.js', `export default ${JSON.stringify(pagesMetadatas, null, 2)};`, ); @@ -68,6 +84,7 @@ module.exports = async function load(siteDir) { const blogDir = path.resolve(siteDir, 'blog'); const blogMetadatas = await loadBlog({blogDir, env, siteConfig}); await generate( + generatedFilesDir, 'blogMetadatas.js', `export default ${JSON.stringify(blogMetadatas, null, 2)};`, ); @@ -99,11 +116,12 @@ module.exports = async function load(siteDir) { sourceToMetadata, versionedDir, translatedDir, + generatedFilesDir, }; // Generate React Router Config. const routesConfig = await genRoutesConfig(props); - await generate('routes.js', routesConfig); + await generate(generatedFilesDir, 'routes.js', routesConfig); return props; }; diff --git a/v2/lib/load/utils.js b/v2/lib/load/utils.js index f03b2f23bbb8..9879b0dc2704 100644 --- a/v2/lib/load/utils.js +++ b/v2/lib/load/utils.js @@ -10,14 +10,11 @@ const fm = require('front-matter'); const escapeStringRegexp = require('escape-string-regexp'); const fs = require('fs-extra'); -const genPath = path.resolve(__dirname, '../core/__generated__'); -fs.ensureDirSync(genPath); - const genCache = new Map(); -async function generate(file, content) { +async function generate(generatedFilesDir, file, content) { const cached = genCache.get(file); if (cached !== content) { - await fs.writeFile(path.join(genPath, file), content); + await fs.writeFile(path.join(generatedFilesDir, file), content); genCache.set(file, content); } } diff --git a/v2/lib/webpack/base.js b/v2/lib/webpack/base.js index 3ec2bdd9c3a3..0ae90356eaa4 100644 --- a/v2/lib/webpack/base.js +++ b/v2/lib/webpack/base.js @@ -45,6 +45,7 @@ module.exports = function createBaseConfig(props, isServer) { versionedDir, translatedDir, baseUrl, + generatedFilesDir, } = props; const config = new Config(); @@ -69,7 +70,7 @@ module.exports = function createBaseConfig(props, isServer) { .set('@docs', docsDir) .set('@pages', pagesDir) .set('@build', outDir) - .set('@generated', path.resolve(__dirname, '../core/__generated__')) + .set('@generated', generatedFilesDir) .set('@core', path.resolve(__dirname, '../core')) .set('@docusaurus', path.resolve(__dirname, '../docusaurus')) .end() diff --git a/v2/package.json b/v2/package.json index d4284bc31d2a..9d5da37fbf0c 100644 --- a/v2/package.json +++ b/v2/package.json @@ -21,6 +21,7 @@ }, "scripts": { "docusaurus": "node bin/docusaurus", + "start": "yarn docusaurus start ../v2-website", "prettier": "prettier --config ../.prettierrc --write \"**/*.js\"", "lint": "eslint --cache \"{lib,bin,test}/**/*.js\"", "test": "jest --config test/jest.config.js"