Git Product home page Git Product logo

webpack-deadcode-plugin's Introduction

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.

webpack-deadcode-plugin's People

Contributors

dependabot[bot] avatar gijosso avatar gregcop1 avatar huytd avatar mamal72 avatar mquy avatar paradite avatar sergivillar avatar thaod avatar zyszys avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.