Skip to content

runner/generator-webpack

Repository files navigation

Tasks generator for Webpack

build status npm version dependencies status devDependencies status Gitter RunKit

Installation

npm install runner-generator-webpack

Usage

Add to the scope:

const generator = require('runner-generator-webpack');

Generate tasks according to the given config:

const tasks = generator(webpack => {
    return {
        mode: 'development',
        entry: 'src/js/main.js',
        output: {
            filename: 'develop.js',
            path: path.resolve('build')
        },
        devtool: 'source-map',
        plugins: [
            new webpack.optimize.OccurrenceOrderPlugin()
        ],
        hooks: {
            done: {
                // according to https://webpack.js.org/api/compiler-hooks/
                // each hook must pass a class name of https://github.com/webpack/tapable
                class: 'AsyncSeriesHook',
                callbacks: [
                    function ( stats) {
                        console.log(stats);
                    }
                ]
            },
            compile: {
                class: 'SyncHook',
                callbacks: [
                    function ( compilationParams ) {
                        console.log(compilationParams);
                    }
                ]
            }
        }
    };
});

Add generated tasks to the runner instance:

const runner = require('runner');

Object.assign(runner.tasks, tasks);

The following tasks will become available:

Task name Description
webpack:config prints the current configuration used for generated tasks
webpack:build performs webpack compilation
webpack:modules prints detailed info on files used in the latest compilation
webpack:clear removes compiled file (source map as well)
webpack:watch starts file changes monitoring and rebuilds when necessary
webpack:unwatch stops monitoring

Generator accepts two arguments: base configuration and additional options.

Base configuration

It's a Webpack config passed to the compiller instance.

Additional options

It's an object with the following properties:

Name Description
prefix an affix placed before a task name (default is webpack:)
suffix a string added at the end of a task name (empty by default)

So it's possible to change generated tasks names:

Object.assign(runner.tasks,
    generator(config, {
        prefix: 'js:',
        suffix: ':develop'
    })
);

It will add the following tasks:

  • js:config:develop
  • js:build:develop
  • js:modules:develop
  • js:clear:develop
  • js:watch:develop
  • js:unwatch:develop

Contribution

If you have any problems or suggestions please open an issue according to the contribution rules.

License

runner-generator-webpack is released under the GPL-3.0 License.