diff --git a/v2-website/docusaurus.config.js b/v2-website/docusaurus.config.js index 366b39705e..3dff09bf52 100644 --- a/v2-website/docusaurus.config.js +++ b/v2-website/docusaurus.config.js @@ -31,7 +31,7 @@ module.exports = { }, plugins: [ { - name: 'docusaurus-content-blog', + name: 'docusaurus-plugin-content-blog', options: { include: ['*.md', '*.mdx'], path: '../v1/website/blog', diff --git a/v2/.eslintrc.js b/v2/.eslintrc.js index 19c4eec318..0c29a5afb6 100644 --- a/v2/.eslintrc.js +++ b/v2/.eslintrc.js @@ -23,6 +23,7 @@ module.exports = { extends: ['airbnb', 'prettier', 'prettier/react'], plugins: ['react-hooks'], rules: { + 'class-methods-use-this': OFF, // It's a way of allowing private variables. 'no-console': OFF, 'func-names': OFF, 'jsx-a11y/click-events-have-key-events': OFF, // Revisit in futureā„¢ diff --git a/v2/lib/commands/start.js b/v2/lib/commands/start.js index e4ff49f617..bb82797715 100644 --- a/v2/lib/commands/start.js +++ b/v2/lib/commands/start.js @@ -5,6 +5,7 @@ * LICENSE file in the root directory of this source tree. */ +const _ = require('lodash'); const path = require('path'); const fs = require('fs-extra'); const chalk = require('chalk'); @@ -46,10 +47,14 @@ module.exports = async function start(siteDir, cliOptions = {}) { console.error(chalk.red(err.stack)); }); }; + const {plugins} = props; const docsRelativeDir = props.siteConfig.customDocsPath; + const pluginPaths = _.flatten( + plugins.map(plugin => plugin.getPathsToWatch()), + ); const fsWatcher = chokidar.watch( [ - // TODO: Watch plugin paths (e.g. blog) + ...pluginPaths, `../${docsRelativeDir}/**/*.md`, loadConfig.configFileName, 'sidebars.json', diff --git a/v2/lib/core/App.js b/v2/lib/core/App.js index b64829e950..b17ef4fa72 100644 --- a/v2/lib/core/App.js +++ b/v2/lib/core/App.js @@ -10,7 +10,7 @@ import {renderRoutes} from 'react-router-config'; import routes from '@generated/routes'; // eslint-disable-line // TODO: Generalize for blog plugin. -import blogMetadata from '@generated/docusaurus-content-blog/blogMetadata.json'; // eslint-disable-line +import blogMetadata from '@generated/docusaurus-plugin-content-blog/blogMetadata.json'; // eslint-disable-line import docsMetadatas from '@generated/docsMetadatas'; // eslint-disable-line import env from '@generated/env'; // eslint-disable-line import docsSidebars from '@generated/docsSidebars'; // eslint-disable-line diff --git a/v2/lib/load/index.js b/v2/lib/load/index.js index b22a28ced4..3933ee73ed 100644 --- a/v2/lib/load/index.js +++ b/v2/lib/load/index.js @@ -88,11 +88,7 @@ module.exports = async function load(siteDir) { // TODO: Resolve using node_modules as well. // eslint-disable-next-line const Plugin = require(path.resolve(__dirname, '../../plugins', name)); - const plugin = new Plugin(opts, context); - return { - name, - plugin, - }; + return new Plugin(opts, context); }); // Plugin lifecycle - loadContents(). @@ -102,11 +98,12 @@ module.exports = async function load(siteDir) { // this in future if there are plugins which need to run in certain order or depend on // others for data. const pluginsLoadedContents = await Promise.all( - plugins.map(async ({plugin, name}) => { + plugins.map(async plugin => { if (!plugin.loadContents) { return null; } + const name = plugin.getName(); const {options} = plugin; const contents = await plugin.loadContents(); const pluginContents = { @@ -132,7 +129,7 @@ module.exports = async function load(siteDir) { addRoute: config => pluginRouteConfigs.push(config), }; await Promise.all( - plugins.map(async ({plugin}, index) => { + plugins.map(async (plugin, index) => { if (!plugin.generateRoutes) { return; } @@ -181,6 +178,7 @@ module.exports = async function load(siteDir) { generatedFilesDir, contentsStore, routesPaths, + plugins, }; return props; diff --git a/v2/plugins/docusaurus-content-blog.js b/v2/plugins/docusaurus-plugin-content-blog.js similarity index 91% rename from v2/plugins/docusaurus-content-blog.js rename to v2/plugins/docusaurus-plugin-content-blog.js index a342dfd5cf..1d9df6dbb2 100644 --- a/v2/plugins/docusaurus-content-blog.js +++ b/v2/plugins/docusaurus-plugin-content-blog.js @@ -34,14 +34,19 @@ class DocusaurusContentBlogPlugin { constructor(opts, context) { this.options = {...DEFAULT_OPTIONS, ...opts}; this.context = context; + this.contentPath = path.resolve(this.context.siteDir, this.options.path); + } + + getName() { + return 'docusaurus-plugin-content-blog'; } async loadContents() { - const {pageCount, path: filePath, include, routeBasePath} = this.options; - const {env, siteConfig, siteDir} = this.context; - const blogDir = path.resolve(siteDir, filePath); - const {baseUrl} = siteConfig; + const {pageCount, include, routeBasePath} = this.options; + const {env, siteConfig} = this.context; + const blogDir = this.contentPath; + const {baseUrl} = siteConfig; const blogFiles = await globby(include, { cwd: blogDir, }); @@ -127,6 +132,10 @@ class DocusaurusContentBlogPlugin { }); }); } + + getPathsToWatch() { + return [this.contentPath]; + } } module.exports = DocusaurusContentBlogPlugin;