Skip to content

Latest commit

 

History

History

stats-validator-plugin-webpack

stats-validator-plugin-webpack

npm version Financial Contributors on Open Collective

Webpack stats validator plugin for @statoscope/stats-validator

This package contains rules to validate a webpack bundle.

Usage

  1. Install

    npm i -D @statoscope/stats-validator-plugin-webpack

  2. Add into statoscope.config.js

    module.exports = {
      validate: {
        // add webpack plugin with rules
        plugins: ['@statoscope/webpack'],
        // rules to validate your stats (use all of them or only specific rules)
        rules: {      
          // ensures that the build time has not exceeded the limit (10 sec)
          '@statoscope/webpack/build-time-limits': ['error', 10000],
          // ensures that bundle doesn't use specified modules
          '@statoscope/webpack/restricted-modules': ['error', [/\/some-package\/dist\/some-module\.js/]],
          // ensures that bundle doesn't use specified packages
          '@statoscope/webpack/restricted-packages': [
            'error',
            [
              'lodash',
              'browserify-crypto',
              {
                name: '@bar/foo',
                version: '1.0.0 - 4.0.0',
                description: 'Package is not maintained and has security issues',
                alternatives: [
                  '@bar/foo2'
                ]
              }
            ],
          ],
          // ensures that bundle hasn't package duplicates
          '@statoscope/webpack/no-packages-dups': ['error'],
          // ensure that the download time of entrypoints is not over the limit (3 sec)
          '@statoscope/webpack/entry-download-time-limits': ['error', { global: { maxDownloadTime: 3000 } }],
          // ensure that the download size of entrypoints is not over the limit (3 mb)
          '@statoscope/webpack/entry-download-size-limits': ['error', { global: { maxSize: 3 * 1024 * 1024 } }],
          // ensures that bundle doesn't have modules with deoptimization
          '@statoscope/webpack/no-modules-deopts': ['warn'],
          // compares build time between input and reference stats. Fails if build time diff is the limit (3 sec)
          '@statoscope/webpack/diff-build-time-limits': ['error', 3000],
          // diff download size of entrypoints between input and reference stats. Fails if size diff is over the limit (3 kb)
          '@statoscope/webpack/diff-entry-download-size-limits': [
            'error',
            { global: { maxSizeDiff: 3 * 1024 } },
          ],
          // diff download time of entrypoints between input and reference stats. Fails if download time is over the limit (500 ms)
          '@statoscope/webpack/diff-entry-download-time-limits': [
            'error',
            { global: { maxDownloadTimeDiff: 500 } },
          ],
          // compares usage of specified modules between input and reference stats
          '@statoscope/webpack/diff-deprecated-modules': ['error', [/\/path\/to\/module\.js/]],
          // compares usage of specified packages usage between input and reference stats. Fails if rxjs usage has increased
          '@statoscope/webpack/diff-deprecated-packages': ['error', ['rxjs']],
        }
      }
    }   

Rules