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

ProgressPluginobject를 제공할 때, 다음의 속성이 지원됩니다

  • 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*

Source

5 Contributors

elliottsjEugeneHlushkobyzyksmelukovchenxsan

Translators