Nonlinear Programming Methods

    webpack-deadcode-plugin
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/webpack-deadcode-plugin package

    0.1.15 • Public • Published

    Webpack Deadcode Plugin

    Webpack plugin to detect unused files and unused exports in used files

    npm node deps licenses

    Installation

    Via npm:

    $ npm install webpack-deadcode-plugin --save-dev

    Via yarn:

    $ yarn add -D webpack-deadcode-plugin

    output

    Usage

    The plugin will report unused files and unused exports into your terminal but those are not part of your webpack build process, therefore, it will not fail your build (warning you). Simple add into your webpack config as follows:

    ✍️ If you use babel-loader, you have to set modules: false to make it works

    # in .babelrc
    {
      "presets": [
        ["env", { modules: false }]
      ]
    }
    
    # or in webpack.config.js -> module/rules
    {
      loader: 'babel-loader',
      options: {
        presets: [
          ['env', { modules: false }]
        ]
      }
    }

    Webpack 3

    const DeadCodePlugin = require('webpack-deadcode-plugin');
    
    const webpackConfig = {
      ...
      plugins: [
        new DeadCodePlugin({
          patterns: [
            'src/**/*.(js|jsx|css)',
          ],
          exclude: [
            '**/*.(stories|spec).(js|jsx)',
          ],
        })
      ]
    }

    Webpack 4

    const DeadCodePlugin = require('webpack-deadcode-plugin');
    
    const webpackConfig = {
      ...
      optimization: {
        usedExports: true,
      },
      plugins: [
        new DeadCodePlugin({
          patterns: [
            'src/**/*.(js|jsx|css)',
          ],
          exclude: [
            '**/*.(stories|spec).(js|jsx)',
          ],
        })
      ]
    }

    Using non-existent css class names

    To detect using non-existent class names in your codebase, you have to use es6-css-loader instead of style-loader/mini-css-extract-plugin. They are quite similiar in term of api except es6-css-loader supports to detect non-existent css class names.

    non-existent css class names

    You can check samples folder, how to to config webpack-deadcode-plugin and es6-css-loader.

    Typescript

    Using with typescript loader (ts-loader, awesome-typescript-loader), if you enable transpileOnly/happyPackMode, output might be not correct due to this issue. In case of incorrect output, the workaround solution is disabling transpileOnly, it will slow down webpack compiling time.

    Under some circumstances and production mode, if your output displays incorrect unused files, we encourage switching to awesome-typescript-loader.

    Configuration

    new DeadCodePlugin(options);

    options.patterns (default: ["**/*.*"])

    The array of patterns to look for unused files and unused export in used files. Directly pass to fast-glob

    options.exclude (default: [])

    The array of patterns to not look at.

    options.context

    Current working directory for patterns above. If you don't set it explicitly, your webpack context will be used.

    options.failOnHint (default: false)

    Deadcode does not interrupt the compilation by default. If you want to cancel the compilation, set it true, it throws a fatal error and stops the compilation.

    options.detectUnusedFiles (default: true)

    Whether to run unused files detection or not.

    options.detectUnusedExport (default: true)

    Whether to run unused export detection or not.

    options.log (default: "all")

    "all": show all messages. "unused": only show messages when there are either unused files or unused export.

    Install

    npm i webpack-deadcode-plugin

    DownloadsWeekly Downloads

    30,609

    Version

    0.1.15

    License

    MIT

    Unpacked Size

    3.57 MB

    Total Files

    19

    Last publish

    Collaborators

    • mquy90