Skip to content

itgalaxy/execa-webpack-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

10b70b1 · Feb 27, 2020

History

35 Commits
Feb 21, 2020
Feb 27, 2020
Feb 27, 2020
Aug 24, 2018
Oct 2, 2019
Dec 22, 2017
Dec 22, 2017
Feb 27, 2020
Jun 25, 2019
Feb 21, 2020
Jun 25, 2019
Dec 19, 2019
Feb 26, 2020
Feb 27, 2020
Feb 27, 2020

Repository files navigation

execa-webpack-plugin

NPM version Build Status dependencies Status devDependencies Status

A better child_process for webpack.

Installation

npm i -D execa-webpack-plugin

Usage

webpack.config.js

const ExecaPlugin = require("execa-webpack-plugin");

module.exports = {
  plugins: [
    new ExecaPlugin({
      onBeforeRun: [
        {
          args: ["build"],
          cmd: "del",
          options: {
            cwd: process.cwd()
          }
        }
      ]
    })
  ]
};

Note: list of command options.

Options

Name Type Default Description
on(NameOfHook) {Array} [] Array of commands to execute on the hook.
bail {Boolean} compiler.options.bail Report the first error as a hard error instead of tolerating it.
dev {Boolean} true Switch for development environments. This causes scripts to execute once. Useful for running HMR on webpack-dev-server or webpack watch mode.

on(NameOfHook)

List of hooks. The name of hook contains: on + hook name (first character in upper case). Examples: onBeforeRun, onRun, onWatchRun, onCompile and etc.

webpack.config.js

module.exports = {
  plugins: [
    [
      new ExecaPlugin({
        onBeforeRun: [
          {
            args: ["build"],
            cmd: "del"
          }
        ],
        onCompile: [
          {
            args: ["check"],
            cmd: "command"
          }
        ],
        // Support nested command
        onDone: [
          {
            args: [
              {
                args: ["arg"],
                cmd: "command-return-argument"
              },
              "other-argument",
              {
                args: ["arg"],
                cmd: "command-return-other-argument"
              }
            ],
            cmd: "command"
          }
        ]
      })
    ]
  ]
};

bail

Fail out on the first error instead of tolerating it. To enable it:

webpack.config.js

module.exports = {
  plugins: [
    [
      new ExecaPlugin({
        bail: true,
        onBeforeRun: [
          {
            args: ["build"],
            cmd: "del"
          }
        ]
      })
    ]
  ]
};

dev

If you want to run command(s) in watch mode every time you can set dev option to false.

webpack.config.js

module.exports = {
  plugins: [
    new ExecaPlugin({
      dev: false,
      onBeforeRun: [
        {
          args: ["build"],
          cmd: "del"
        }
      ]
    })
  ]
};

Examples

Set logger level

webpack.config.js

module.exports = {
  infrastructureLogging: {
    level: "warn"
  },
  plugins: [
    new ExecaPlugin({
      onBeforeRun: [
        {
          args: ["build"],
          cmd: "del"
        }
      ]
    })
  ]
};

Thanks