4.0.0 • Published 10 years ago

webpack-config-stream v4.0.0

Weekly downloads
14
License
MIT
Repository
github
Last release
10 years ago

NPM version Travis build status AppVeyor build status Code Climate Code Climate Dependency Status Dependency Status

webpack-config-stream

Helps to build bundles based on webpack configs

For API docs please see the documentation page!

Here is a quick sample of what webpack-config-stream does:

gulpfile.js

'use strict';

var path = require('path'),
    gulp = require('gulp'),
    webpack = require('webpack-config-stream'),
    DefaultCacheStrategy = require('webpack-config-stream/lib/defaultCacheStrategy');

var src = './src',
    dest = './dist',
    configOptions = {
        debug: true,
        devtool: '#source-map',
        watchDelay: 200
    },
    compilerOptions = {
        useMemoryFs: true,
        progress: true
    },
    CONFIG_FILENAME = webpack.Config.FILENAME,
    CACHE_DEPENDS_ON = [
        './package.json'
    ],
    RUN_CACHE_STRATEGY = new DefaultCacheStrategy({
        dependsOn: [
            '[dirname]/**/*.*'
        ].concat(CACHE_DEPENDS_ON)
    }),
    WATCH_CACHE_STRATEGY = new DefaultCacheStrategy({
        dependsOn: [
            '[filename]'
        ].concat(CACHE_DEPENDS_ON)
    });

gulp.task('webpack', [], function() {
    return gulp.src(path.join(src, '**', CONFIG_FILENAME), { base: path.resolve(src) })
        .pipe(webpack.cache(RUN_CACHE_STRATEGY))
        .pipe(webpack.init(compilerOptions))
        .pipe(webpack.props(configOptions))
        .pipe(webpack.run())
        .pipe(webpack.format({
            version: false,
            timings: true
        }))
        .pipe(webpack.failAfter({
            errors: true,
            warnings: true
        }))
        .pipe(webpack.ignore())
        .pipe(gulp.dest(dest));
});

gulp.task('watch', function() {
    gulp.watch(path.join(src, '**/*.*')).on('change', function(event) {
        if (event.type === 'changed') {
            gulp.src(event.path, { base: path.resolve(src) })
                .pipe(webpack.closest())
                .pipe(webpack.cache(WATCH_CACHE_STRATEGY))
                .pipe(webpack.init(compilerOptions))
                .pipe(webpack.props(configOptions))
                .pipe(webpack.watch(function(err, stats) {
                    gulp.src(this.path, { base: this.base })
                        .pipe(webpack.proxy(err, stats))
                        .pipe(webpack.format({
                            verbose: true,
                            version: false
                        }))
                        .pipe(webpack.ignore())
                        .pipe(gulp.dest(dest));
                }));
        }
    });
});