ProgressPlugin
ProgressPlugin은 컴파일 도중에 진행 상황을 보고받을 방법을 자신이 원하는대로 정하는 방법을 제공합니다.
Usage
ProgressPlugin의 인스턴스를 만들고, 허용되는 여러 매개변수 중 하나를 제공하며, 기본 핸들러를 사용자 지정하는 데 사용할 수 있는 정적 메서드 createDefaultHandler도 있습니다.
Providing function
훅이 진행 상황을 보고할 때 호출될 handler 함수를 제공합니다. 함수 handler의 실행 인자:
percentage: 컴파일의 성공 확률을 나타내는 0과 1 사이의 숫자message: 현재 실행중인 훅에 대한 짧은 설명...args: 현재 실행 상황을 묘사하는 0개 이상의 추가적인 문자열
const handler = (percentage, message, ...args) => {
// 예를 들어, 각 진행 메세지를 콘솔에 직접 출력
console.info(percentage, message, ...args);
};
new webpack.ProgressPlugin(handler);Providing object
ProgressPlugin에 object를 제공할 때, 다음의 속성이 지원됩니다
activeModules(boolean = false): 활성화된 모듈의 수와 활성화된 모듈 하나를 진행 메세지로 보여줍니다.entries(boolean = true): 엔트리 수를 진행 메세지로 보여줍니다.handler(Providing function을 보세요)modules(boolean = true): 모듈 수를 진행 메세지로 보여줍니다.modulesCount(number = 5000): 시작할 모듈 수의 최솟값이며modules속성이 활성화되면 적용됩니다.profile(boolean = false): 진행 단계의 프로필 정보를 수집하도록ProgressPlugin에게 알려줍니다.dependencies(boolean = true): 종속성 수를 진행 메세지로 보여줍니다.dependenciesCount(number = 10000): 시작할 종속성 수의 최솟값이며dependencies속성이 활성화되면 적용됩니다.percentBy(string = null: 'entries' | 'dependencies' | 'modules' | null): 진행률을 계산할 방법을ProgressPlugin에게 알려줍니다.
new webpack.ProgressPlugin({
activeModules: false,
entries: true,
handler(percentage, message, ...args) {
// 사용자 지정 로직
},
modules: true,
modulesCount: 5000,
profile: false,
dependencies: true,
dependenciesCount: 10000,
percentBy: null,
});webpack.ProgressPlugin.createDefaultHandler
ProgressPlugin의 기본 핸들러가 요구 사항을 충족하지 않는 경우 정적 ProgressPlugin.createDefaultHandler 메서드를 사용하여 사용자 지정할 수 있습니다.
static createDefaultHandler: (
profile: undefined | null | boolean,
logger: WebpackLogger
) => (percentage: number, msg: string, ...args: string[]) => void;Percentage calculation
기본적으로 진행률은 빌드된 모듈 수와 총 모듈 수를 기반으로 계산됩니다: built / total
총 모듈 수는 사전에는 알 수 없고 빌드를 거치면서 변합니다. 이는 부정확한 진행률을 야기할 수 있습니다.
이러한 문제를 해결하기 위해 ProgressPlugin은 마지막으로 알려진 총 모듈 수를 캐시하여 이 값을 다음 빌드 때 재사용합니다. 첫 번째 빌드는 데이터 값을 메모리에 캐시하지만 그 다음 빌드들은 이 값을 사용하고 업데이트합니다.
다중 구성된 엔트리 포인트가 있는 프로젝트들을 위한 설정에는
percentBy: 'entries'를 사용할 것을 추천합니다. 엔트리 포인트의 개수를 미리 알 수 있기 때문에 확률 계산은 더욱 정확해질 것입니다.
Supported Hooks
다음 훅은 ProgressPlugin에 진행 정보를 보고합니다.
Compiler
- compilation
- emit*
- afterEmit*
- done
Compilation
- buildModule
- failedModule
- succeedModule
- finishModules*
- seal*
- optimizeDependenciesBasic*
- optimizeDependencies*
- optimizeDependenciesAdvanced*
- afterOptimizeDependencies*
- optimize*
- optimizeModulesBasic*
- optimizeModules*
- optimizeModulesAdvanced*
- afterOptimizeModules*
- optimizeChunksBasic*
- optimizeChunks*
- optimizeChunksAdvanced*
- afterOptimizeChunks*
- optimizeTree*
- afterOptimizeTree*
- optimizeChunkModulesBasic*
- optimizeChunkModules*
- optimizeChunkModulesAdvanced*
- afterOptimizeChunkModules*
- reviveModules*
- optimizeModuleOrder*
- advancedOptimizeModuleOrder*
- beforeModuleIds*
- moduleIds*
- optimizeModuleIds*
- afterOptimizeModuleIds*
- reviveChunks*
- optimizeChunkOrder*
- beforeChunkIds*
- optimizeChunkIds*
- afterOptimizeChunkIds*
- recordModules*
- recordChunks*
- beforeHash*
- afterHash*
- recordHash*
- beforeModuleAssets*
- beforeChunkAssets*
- additionalChunkAssets*
- record*
- additionalAssets*
- optimizeChunkAssets*
- afterOptimizeChunkAssets*
- optimizeAssets*
- afterOptimizeAssets*
- afterSeal*

