Skip to content

Commit

Permalink
[WIP] Implementaion of multiple directory static sourcing
Browse files Browse the repository at this point in the history
  • Loading branch information
oriooctopus committed Jan 24, 2021
1 parent 0a5d306 commit b4423b0
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 19 deletions.
1 change: 1 addition & 0 deletions packages/docusaurus-types/src/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ export interface DocusaurusConfig {
)[];
clientModules?: string[];
ssrTemplate?: string;
staticDirectories?: string[];
stylesheets?: (
| string
| {
Expand Down
32 changes: 16 additions & 16 deletions packages/docusaurus/src/commands/build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ async function buildLocale({
outDir,
generatedFilesDir,
plugins,
siteConfig: {baseUrl, onBrokenLinks},
siteConfig: {baseUrl, onBrokenLinks, staticDirectories = [STATIC_DIR_NAME]},
routes,
} = props;

Expand Down Expand Up @@ -150,21 +150,21 @@ async function buildLocale({
},
});

const staticDir = path.resolve(siteDir, STATIC_DIR_NAME);
if (fs.existsSync(staticDir)) {
serverConfig = merge(serverConfig, {
plugins: [
new CopyWebpackPlugin({
patterns: [
{
from: staticDir,
to: outDir,
},
],
}),
],
});
}
const staticDirectoryConfigurations = staticDirectories
.map((dir) => path.resolve(siteDir, dir))
.filter((dir) => fs.existsSync(dir))
.map((dir) => ({
from: dir,
to: outDir,
}));

serverConfig = merge(serverConfig, {
plugins: [
new CopyWebpackPlugin({
patterns: staticDirectoryConfigurations,
}),
],
});

// Plugin Lifecycle - configureWebpack.
plugins.forEach((plugin) => {
Expand Down
9 changes: 6 additions & 3 deletions packages/docusaurus/src/commands/start.ts
Original file line number Diff line number Diff line change
Expand Up @@ -178,9 +178,12 @@ export default async function start(
overlay: false,
host,
before: (app, server) => {
app.use(
baseUrl,
express.static(path.resolve(siteDir, STATIC_DIR_NAME)),
const staticDirectories = siteConfig.staticDirectories || [
STATIC_DIR_NAME,
];

staticDirectories.forEach((dir) =>
app.use(baseUrl, express.static(path.resolve(siteDir, dir))),
);

// This lets us fetch source contents from webpack for the error overlay.
Expand Down
1 change: 1 addition & 0 deletions packages/docusaurus/src/server/configValidation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ const ConfigSchema = Joi.object({
.equal('ignore', 'log', 'warn', 'error', 'throw')
.default(DEFAULT_CONFIG.onDuplicateRoutes),
organizationName: Joi.string().allow(''),
staticDirectories: Joi.array().items(Joi.string()),
projectName: Joi.string().allow(''),
customFields: Joi.object().unknown().default(DEFAULT_CONFIG.customFields),
githubHost: Joi.string(),
Expand Down
4 changes: 4 additions & 0 deletions website/docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ module.exports = {
tagline: 'Build optimized websites quickly, focus on your content',
organizationName: 'facebook',
projectName: 'docusaurus',
staticDirectories: [
path.resolve(__dirname, './static'),
path.resolve(__dirname, './test'),
],
baseUrl,
baseUrlIssueBanner: true,
url: 'https://v2.docusaurus.io',
Expand Down
1 change: 1 addition & 0 deletions website/test/hey.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
hey hey hey!!!
Binary file added website/test/img/test-image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit b4423b0

Please sign in to comment.