-
-
Notifications
You must be signed in to change notification settings - Fork 235
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: unify logger #3121
chore: unify logger #3121
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
--- | ||
'@module-federation/bridge-shared': patch | ||
'@module-federation/bridge-react': patch | ||
'@module-federation/bridge-vue3': patch | ||
'@module-federation/rsbuild-plugin': patch | ||
'@module-federation/data-prefetch': patch | ||
'@module-federation/retry-plugin': patch | ||
'@module-federation/dts-plugin': patch | ||
'@module-federation/enhanced': patch | ||
'@module-federation/managers': patch | ||
'@module-federation/manifest': patch | ||
'@module-federation/modern-js': patch | ||
'@module-federation/runtime': patch | ||
'@module-federation/sdk': patch | ||
--- | ||
|
||
chore: unified logger |
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -1,7 +1,9 @@ | ||||||
import React from 'react'; | ||||||
import { Logger } from '@module-federation/bridge-shared'; | ||||||
import { createLogger } from '@module-federation/sdk'; | ||||||
|
||||||
export const LoggerInstance = new Logger('bridge-react'); | ||||||
export const LoggerInstance = createLogger( | ||||||
'[ Module Federation Bridge React ]', | ||||||
); | ||||||
|
||||||
type typeReact = typeof React; | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The type alias 'typeReact' uses a non-standard naming convention. Consider using PascalCase for type definitions:
Suggested change
|
||||||
|
||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,2 @@ | ||
export type { RenderFnParams, ProviderParams } from './type'; | ||
export { Logger } from './logger'; | ||
export { dispatchPopstateEnv } from './env'; |
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
import { Logger } from '@module-federation/bridge-shared'; | ||
import { createLogger } from '@module-federation/sdk'; | ||
|
||
export const LoggerInstance = new Logger('vue3-bridge'); | ||
export const LoggerInstance = createLogger('[ Module Federation Bridge Vue3 ]'); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,5 @@ | ||
import { Logger } from '@module-federation/sdk'; | ||
import { createLogger } from '@module-federation/sdk'; | ||
|
||
export default new Logger('[Module Federation Data Prefetch]'); | ||
const logger = createLogger('[ Module Federation Data Prefetch ]'); | ||
|
||
export default logger; |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -27,7 +27,7 @@ import { | |||||||||||||||||||||||||||||||||||||||||
REMOTE_ALIAS_IDENTIFIER, | ||||||||||||||||||||||||||||||||||||||||||
HOST_API_TYPES_FILE_NAME, | ||||||||||||||||||||||||||||||||||||||||||
} from '../constant'; | ||||||||||||||||||||||||||||||||||||||||||
import { fileLog } from '../../server'; | ||||||||||||||||||||||||||||||||||||||||||
import { fileLog, logger } from '../../server'; | ||||||||||||||||||||||||||||||||||||||||||
import { axiosGet, cloneDeepOptions, isDebugMode } from './utils'; | ||||||||||||||||||||||||||||||||||||||||||
import { UpdateMode } from '../../server/constant'; | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
|
@@ -163,12 +163,10 @@ class DTSManager { | |||||||||||||||||||||||||||||||||||||||||
console.error(err); | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
console.log(ansiColors.green('Federated types created correctly')); | ||||||||||||||||||||||||||||||||||||||||||
logger.success('Federated types created correctly'); | ||||||||||||||||||||||||||||||||||||||||||
} catch (error) { | ||||||||||||||||||||||||||||||||||||||||||
if (this.options.remote?.abortOnError === false) { | ||||||||||||||||||||||||||||||||||||||||||
console.error( | ||||||||||||||||||||||||||||||||||||||||||
ansiColors.red(`Unable to compile federated types, ${error}`), | ||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||
logger.error(`Unable to compile federated types, ${error}`); | ||||||||||||||||||||||||||||||||||||||||||
} else { | ||||||||||||||||||||||||||||||||||||||||||
throw error; | ||||||||||||||||||||||||||||||||||||||||||
Comment on lines
163
to
171
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The error handling here could be improved by providing more detailed error information. Instead of directly passing the error object to the logger, extract useful information and format it better:
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
|
@@ -406,7 +404,7 @@ class DTSManager { | |||||||||||||||||||||||||||||||||||||||||
this.consumeAPITypes(hostOptions); | ||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
console.log(ansiColors.green('Federated types extraction completed')); | ||||||||||||||||||||||||||||||||||||||||||
logger.success('Federated types extraction completed'); | ||||||||||||||||||||||||||||||||||||||||||
} catch (err) { | ||||||||||||||||||||||||||||||||||||||||||
if (this.options.host?.abortOnError === false) { | ||||||||||||||||||||||||||||||||||||||||||
fileLog( | ||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+407
to
410
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The error handling at line 409-410 is inconsistent with the pattern used elsewhere in the code. It switches from using the logger to using fileLog directly. For consistency and better error reporting:
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -10,6 +10,7 @@ import { | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
WEB_CLIENT_OPTIONS_IDENTIFIER, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
WebClientOptions, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
getIPV4, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logger, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} from '../server'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import type { Compiler, WebpackPluginInstance } from 'webpack'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import path from 'path'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -56,32 +57,32 @@ export class DevPlugin implements WebpackPluginInstance { | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
private _stopWhenSIGTERMOrSIGINT(): void { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
process.on('SIGTERM', () => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
console.log( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chalk`{cyan ${this._options.name} Process(${process.pid}) SIGTERM, mf server will exit...}`, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logger.info( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
`${this._options.name} Process(${process.pid}) SIGTERM, mf server will exit...`, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
this._exit(PROCESS_EXIT_CODE.SUCCESS); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
process.on('SIGINT', () => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
console.log( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chalk`{cyan ${this._options.name} Process(${process.pid}) SIGINT, mf server will exit...}`, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logger.info( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
`${this._options.name} Process(${process.pid}) SIGINT, mf server will exit...`, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
this._exit(PROCESS_EXIT_CODE.SUCCESS); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
58
to
71
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The signal handling code could be refactored to reduce duplication and improve maintainability. Consider consolidating the SIGTERM and SIGINT handlers since they perform identical actions:
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
private _handleUnexpectedExit(): void { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
process.on('unhandledRejection', (error) => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
console.error('Unhandled Rejection Error: ', error); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
console.log( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chalk`{cyan ${this._options.name} Process(${process.pid}) unhandledRejection, mf server will exit...}`, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logger.error(error); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logger.error( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
`Process(${process.pid}) unhandledRejection, mf server will exit...`, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
this._exit(PROCESS_EXIT_CODE.FAILURE); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
process.on('uncaughtException', (error) => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
console.error('Unhandled Rejection Error: ', error); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
console.log( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chalk`{cyan ${this._options.name} Process(${process.pid}) uncaughtException, mf server will exit...}`, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logger.error(error); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logger.error( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
`Process(${process.pid}) uncaughtException, mf server will exit...`, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
this._exit(PROCESS_EXIT_CODE.FAILURE); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
74
to
88
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Similar to the signal handlers, the error handling code has duplicate patterns. Consider consolidating the error handlers to improve maintainability:
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1,11 +1,13 @@ | ||||||||||||||||||||||||
import { logger } from '@module-federation/sdk'; | ||||||||||||||||||||||||
import { createLogger } from '@module-federation/sdk'; | ||||||||||||||||||||||||
import * as log4js from 'log4js'; | ||||||||||||||||||||||||
import chalk from 'chalk'; | ||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The log4js import appears to be unused. If it's not needed elsewhere in the file, consider removing it to avoid unused dependencies. |
||||||||||||||||||||||||
import { MF_SERVER_IDENTIFIER } from '../constant'; | ||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The chalk import appears to be unused. If it's not needed elsewhere in the file, consider removing it to avoid unused dependencies. |
||||||||||||||||||||||||
import { ActionKind } from '../message/Action'; | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
const logger = createLogger(`[ ${MF_SERVER_IDENTIFIER} ]`); | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
function log(msg: string): void { | ||||||||||||||||||||||||
logger.info(chalk`{bold {greenBright [ ${MF_SERVER_IDENTIFIER} ]} ${msg}}`); | ||||||||||||||||||||||||
logger.info(msg); | ||||||||||||||||||||||||
} | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
Comment on lines
9
to
11
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The
Here's a suggestion with JSDoc:
Suggested change
|
||||||||||||||||||||||||
function fileLog(msg: string, module: string, level: string) { | ||||||||||||||||||||||||
|
@@ -35,4 +37,4 @@ function error(error: unknown, action: ActionKind, from: string): string { | |||||||||||||||||||||||
return err.toString(); | ||||||||||||||||||||||||
} | ||||||||||||||||||||||||
|
||||||||||||||||||||||||
export { log, fileLog, error }; | ||||||||||||||||||||||||
export { log, fileLog, error, logger }; |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -10,6 +10,7 @@ import { StatsPlugin } from '@module-federation/manifest'; | |||||||||||||||||||||||
import { | ||||||||||||||||||||||||
composeKeyWithSeparator, | ||||||||||||||||||||||||
type moduleFederationPlugin, | ||||||||||||||||||||||||
logger, | ||||||||||||||||||||||||
} from '@module-federation/sdk'; | ||||||||||||||||||||||||
import { PrefetchPlugin } from '@module-federation/data-prefetch/cli'; | ||||||||||||||||||||||||
import { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path'; | ||||||||||||||||||||||||
|
@@ -110,7 +111,7 @@ class ModuleFederationPlugin implements WebpackPluginInstance { | |||||||||||||||||||||||
if (err instanceof Error) { | ||||||||||||||||||||||||
err.message = `[ ModuleFederationPlugin ]: Manifest will not generate, because: ${err.message}`; | ||||||||||||||||||||||||
} | ||||||||||||||||||||||||
console.warn(err); | ||||||||||||||||||||||||
logger.warn(err); | ||||||||||||||||||||||||
Comment on lines
111
to
+114
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The error handling could be improved by providing more context and using a more appropriate logging level for this scenario. Since this is a configuration issue that affects the plugin's core functionality, it should be logged as an error instead of a warning. Here's a better approach:
Suggested change
This change:
|
||||||||||||||||||||||||
disableManifest = true; | ||||||||||||||||||||||||
} | ||||||||||||||||||||||||
} | ||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -8,6 +8,7 @@ import fs from 'fs'; | |||||||||||||||||||||||||||||||||
import path from 'path'; | ||||||||||||||||||||||||||||||||||
import { ConcatSource } from 'webpack-sources'; | ||||||||||||||||||||||||||||||||||
import { transformSync } from '@swc/core'; | ||||||||||||||||||||||||||||||||||
import { logger } from '@module-federation/sdk'; | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
const { RuntimeModule, Template, RuntimeGlobals } = require( | ||||||||||||||||||||||||||||||||||
normalizeWebpackPath('webpack'), | ||||||||||||||||||||||||||||||||||
Comment on lines
8
to
14
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The code uses
Suggested change
|
||||||||||||||||||||||||||||||||||
|
@@ -142,7 +143,7 @@ class CustomRuntimePlugin { | |||||||||||||||||||||||||||||||||
childCompiler.options.devtool = undefined; | ||||||||||||||||||||||||||||||||||
childCompiler.options.optimization.splitChunks = false; | ||||||||||||||||||||||||||||||||||
childCompiler.options.optimization.removeAvailableModules = true; | ||||||||||||||||||||||||||||||||||
console.log('Creating child compiler for', this.bundlerRuntimePath); | ||||||||||||||||||||||||||||||||||
logger.log('Creating child compiler for', this.bundlerRuntimePath); | ||||||||||||||||||||||||||||||||||
Comment on lines
143
to
+146
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The child compiler configuration is setting critical options without documenting why these specific settings are necessary. Add a comment explaining the rationale behind disabling devtool and splitChunks, and enabling removeAvailableModules:
Suggested change
|
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
childCompiler.hooks.thisCompilation.tap( | ||||||||||||||||||||||||||||||||||
this.constructor.name, | ||||||||||||||||||||||||||||||||||
|
@@ -174,7 +175,7 @@ class CustomRuntimePlugin { | |||||||||||||||||||||||||||||||||
onceForCompilationMap.set(compilation, source); | ||||||||||||||||||||||||||||||||||
onceForCompilationMap.set(compiler, source); | ||||||||||||||||||||||||||||||||||
fs.writeFileSync(outputPath, source); | ||||||||||||||||||||||||||||||||||
console.log('got compilation asset'); | ||||||||||||||||||||||||||||||||||
logger.log('got compilation asset'); | ||||||||||||||||||||||||||||||||||
childCompilation.chunks.forEach((chunk) => { | ||||||||||||||||||||||||||||||||||
chunk.files.forEach((file) => { | ||||||||||||||||||||||||||||||||||
childCompilation.deleteAsset(file); | ||||||||||||||||||||||||||||||||||
Comment on lines
175
to
181
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The code writes to the filesystem synchronously which could block the event loop. Consider using asynchronous file operations. Also, improve error handling for the file write operation:
Suggested change
|
||||||||||||||||||||||||||||||||||
|
@@ -195,7 +196,7 @@ class CustomRuntimePlugin { | |||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
if (!childCompilation) { | ||||||||||||||||||||||||||||||||||
console.warn( | ||||||||||||||||||||||||||||||||||
logger.warn( | ||||||||||||||||||||||||||||||||||
'Embed Federation Runtime: Child compilation is undefined', | ||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||
return callback(); | ||||||||||||||||||||||||||||||||||
|
@@ -205,7 +206,7 @@ class CustomRuntimePlugin { | |||||||||||||||||||||||||||||||||
return callback(childCompilation.errors[0]); | ||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
console.log('Code built successfully'); | ||||||||||||||||||||||||||||||||||
logger.log('Code built successfully'); | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
callback(); | ||||||||||||||||||||||||||||||||||
Comment on lines
+209
to
211
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The success log message lacks context about what code was built. Add more specific information to aid in debugging:
Suggested change
|
||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||
|
@@ -233,7 +234,7 @@ class CustomRuntimePlugin { | |||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
compilation.addRuntimeModule(chunk, runtimeModule); | ||||||||||||||||||||||||||||||||||
console.log(`Custom runtime module added to chunk: ${chunk.name}`); | ||||||||||||||||||||||||||||||||||
logger.log(`Custom runtime module added to chunk: ${chunk.name}`); | ||||||||||||||||||||||||||||||||||
Comment on lines
236
to
+237
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The log message could be more informative by including additional context about the runtime module being added:
Suggested change
|
||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||
compilation.hooks.runtimeRequirementInTree | ||||||||||||||||||||||||||||||||||
.for(federationGlobal) | ||||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1,7 +1,7 @@ | ||||||||||||||||||
import path from 'path'; | ||||||||||||||||||
import finder from 'find-pkg'; | ||||||||||||||||||
import fs from 'fs'; | ||||||||||||||||||
import { MFModuleType } from '@module-federation/sdk'; | ||||||||||||||||||
import { MFModuleType, logger } from '@module-federation/sdk'; | ||||||||||||||||||
|
||||||||||||||||||
export class PKGJsonManager { | ||||||||||||||||||
private _pkg?: Record<string, any>; | ||||||||||||||||||
Comment on lines
6
to
7
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The type annotation for
Suggested change
|
||||||||||||||||||
|
@@ -27,7 +27,7 @@ export class PKGJsonManager { | |||||||||||||||||
this._pkg = pkg; | ||||||||||||||||||
return pkg; | ||||||||||||||||||
} catch (err) { | ||||||||||||||||||
console.error(err); | ||||||||||||||||||
logger.error(err); | ||||||||||||||||||
return {}; | ||||||||||||||||||
Comment on lines
29
to
31
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The error handling here silently fails and returns an empty object, which could mask serious issues. Consider adding error details to the log message and potentially throwing a more specific error. Here's a suggested improvement:
Suggested change
|
||||||||||||||||||
} | ||||||||||||||||||
} | ||||||||||||||||||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -5,16 +5,14 @@ import { | |||||||||||||||||||||||||||||||||||||||||||
Stats, | ||||||||||||||||||||||||||||||||||||||||||||
Manifest, | ||||||||||||||||||||||||||||||||||||||||||||
ManifestExpose, | ||||||||||||||||||||||||||||||||||||||||||||
StatsExpose, | ||||||||||||||||||||||||||||||||||||||||||||
StatsShared, | ||||||||||||||||||||||||||||||||||||||||||||
ManifestShared, | ||||||||||||||||||||||||||||||||||||||||||||
ManifestRemote, | ||||||||||||||||||||||||||||||||||||||||||||
StatsRemote, | ||||||||||||||||||||||||||||||||||||||||||||
moduleFederationPlugin, | ||||||||||||||||||||||||||||||||||||||||||||
encodeName, | ||||||||||||||||||||||||||||||||||||||||||||
MFPrefetchCommon, | ||||||||||||||||||||||||||||||||||||||||||||
} from '@module-federation/sdk'; | ||||||||||||||||||||||||||||||||||||||||||||
import { getFileName, isDev } from './utils'; | ||||||||||||||||||||||||||||||||||||||||||||
import logger from './logger'; | ||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider using a more specific logger import to avoid potential naming conflicts and improve code clarity. Import the logger with a more descriptive name that indicates its purpose: ```suggestion
|
||||||||||||||||||||||||||||||||||||||||||||
import type { Compilation, Compiler } from 'webpack'; | ||||||||||||||||||||||||||||||||||||||||||||
import { PLUGIN_IDENTIFIER } from './constants'; | ||||||||||||||||||||||||||||||||||||||||||||
import { ManifestInfo } from './types'; | ||||||||||||||||||||||||||||||||||||||||||||
|
@@ -145,10 +143,12 @@ class ManifestManager { | |||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
if (isDev()) { | ||||||||||||||||||||||||||||||||||||||||||||
console.log( | ||||||||||||||||||||||||||||||||||||||||||||
chalk`{bold {greenBright [ ${PLUGIN_IDENTIFIER} ]} {greenBright Manifest Link:} {cyan ${ | ||||||||||||||||||||||||||||||||||||||||||||
publicPath === 'auto' ? '{auto}/' : publicPath | ||||||||||||||||||||||||||||||||||||||||||||
}${manifestFileName}}}`, | ||||||||||||||||||||||||||||||||||||||||||||
logger.log( | ||||||||||||||||||||||||||||||||||||||||||||
`Manifest Link: ${chalk.cyan( | ||||||||||||||||||||||||||||||||||||||||||||
`${ | ||||||||||||||||||||||||||||||||||||||||||||
publicPath === 'auto' ? '{auto}/' : publicPath | ||||||||||||||||||||||||||||||||||||||||||||
}${manifestFileName}`, | ||||||||||||||||||||||||||||||||||||||||||||
)} `, | ||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The log message could be improved for better readability and debugging. Consider using template literals and adding more context about what this manifest link represents: ```suggestion
|
||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider extracting the manifest link generation logic into a separate function to improve code organization and reusability. This would also make the code more testable:
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -2,7 +2,6 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* eslint-disable @typescript-eslint/member-ordering */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/* eslint-disable max-depth */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import chalk from 'chalk'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
StatsRemote, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
StatsBuildInfo, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -31,6 +30,7 @@ import { | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
getFileName, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
getTypesMetaInfo, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} from './utils'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import logger from './logger'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
import { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ContainerManager, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemoteManager, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -490,13 +490,13 @@ class StatsManager { | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} = compiler.options; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if (typeof publicPath !== 'string') { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
console.warn( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chalk`{bold {yellow [ ${PLUGIN_IDENTIFIER} ]: Manifest will not generate, because publicPath can only be string, but got '${publicPath}' }}`, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logger.warn( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
`Manifest will not generate, because publicPath can only be string, but got '${publicPath}'`, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+493
to
495
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider using a more descriptive error message that explains what valid values are expected for publicPath. This helps developers understand how to fix the issue:
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return false; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} else if (publicPath === 'auto') { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
console.warn( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chalk`{bold {blue [ ${PLUGIN_IDENTIFIER} ]: Manifest will use absolute path resolution via its host at runtime, reason: publicPath='${publicPath}'}}`, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logger.warn( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
`Manifest will use absolute path resolution via its host at runtime, reason: publicPath='${publicPath}'`, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return true; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
492
to
502
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The error handling for publicPath validation could be improved by consolidating the checks and making the logic more maintainable. Here's a suggested refactoring:
Suggested change
This improves the code by:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The logger instance is exported as a mutable variable. Consider making it readonly to prevent accidental modifications: