mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-10 15:47:23 +02:00
refactor(core): improve handling of server bundle (#10429)
This commit is contained in:
parent
1c56fa5830
commit
97bd815d9a
10 changed files with 106 additions and 54 deletions
|
@ -50,12 +50,13 @@ type FileLoaderUtils = {
|
|||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns unified loader configurations to be used for various file types.
|
||||
*
|
||||
* Inspired by https://github.com/gatsbyjs/gatsby/blob/8e6e021014da310b9cc7d02e58c9b3efe938c665/packages/gatsby/src/utils/webpack-utils.ts#L447
|
||||
*/
|
||||
export function getFileLoaderUtils(): FileLoaderUtils {
|
||||
// TODO this historical code is quite messy
|
||||
// We should try to get rid of it and move to assets pipeline
|
||||
function createFileLoaderUtils({
|
||||
isServer,
|
||||
}: {
|
||||
isServer: boolean;
|
||||
}): FileLoaderUtils {
|
||||
// Files/images < urlLoaderLimit will be inlined as base64 strings directly in
|
||||
// the html
|
||||
const urlLoaderLimit = WEBPACK_URL_LOADER_LIMIT;
|
||||
|
@ -72,6 +73,7 @@ export function getFileLoaderUtils(): FileLoaderUtils {
|
|||
loader: require.resolve(`file-loader`),
|
||||
options: {
|
||||
name: fileLoaderFileName(options.folder),
|
||||
emitFile: !isServer,
|
||||
},
|
||||
}),
|
||||
url: (options: {folder: AssetFolder}) => ({
|
||||
|
@ -80,6 +82,7 @@ export function getFileLoaderUtils(): FileLoaderUtils {
|
|||
limit: urlLoaderLimit,
|
||||
name: fileLoaderFileName(options.folder),
|
||||
fallback: require.resolve('file-loader'),
|
||||
emitFile: !isServer,
|
||||
},
|
||||
}),
|
||||
|
||||
|
@ -92,13 +95,19 @@ export function getFileLoaderUtils(): FileLoaderUtils {
|
|||
require.resolve('url-loader'),
|
||||
)}?limit=${urlLoaderLimit}&name=${fileLoaderFileName(
|
||||
'images',
|
||||
)}&fallback=${escapePath(require.resolve('file-loader'))}!`,
|
||||
)}&fallback=${escapePath(require.resolve('file-loader'))}${
|
||||
isServer ? `&emitFile=false` : ''
|
||||
}!`,
|
||||
inlineMarkdownAssetImageFileLoader: `!${escapePath(
|
||||
require.resolve('file-loader'),
|
||||
)}?name=${fileLoaderFileName('images')}!`,
|
||||
)}?name=${fileLoaderFileName('images')}${
|
||||
isServer ? `&emitFile=false` : ''
|
||||
}!`,
|
||||
inlineMarkdownLinkFileLoader: `!${escapePath(
|
||||
require.resolve('file-loader'),
|
||||
)}?name=${fileLoaderFileName('files')}!`,
|
||||
)}?name=${fileLoaderFileName('files')}${
|
||||
isServer ? `&emitFile=false` : ''
|
||||
}!`,
|
||||
};
|
||||
|
||||
const rules: FileLoaderUtils['rules'] = {
|
||||
|
@ -173,3 +182,16 @@ export function getFileLoaderUtils(): FileLoaderUtils {
|
|||
|
||||
return {loaders, rules};
|
||||
}
|
||||
|
||||
const FileLoaderUtilsMap = {
|
||||
server: createFileLoaderUtils({isServer: true}),
|
||||
client: createFileLoaderUtils({isServer: false}),
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns unified loader configurations to be used for various file types.
|
||||
* Inspired by https://github.com/gatsbyjs/gatsby/blob/8e6e021014da310b9cc7d02e58c9b3efe938c665/packages/gatsby/src/utils/webpack-utils.ts#L447
|
||||
*/
|
||||
export function getFileLoaderUtils(isServer: boolean): FileLoaderUtils {
|
||||
return isServer ? FileLoaderUtilsMap.server : FileLoaderUtilsMap.client;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue