webpack学习笔记

1. webpack配置文件解析

1.1 参数解析

2. api

2.1 webpack(options, callback)

下面是其源码:

function webpack(options, callback) {
    var compiler;
    if(Array.isArray(options)) {
        compiler = new MultiCompiler(options.map(function(options) {
            return webpack(options);
        }));
    } else if(typeof options === "object") {
        new WebpackOptionsDefaulter().process(options);

        compiler = new Compiler();
        compiler.options = options;
        compiler.options = new WebpackOptionsApply().process(options, compiler);
        new NodeEnvironmentPlugin().apply(compiler);
        compiler.applyPlugins("environment");
        compiler.applyPlugins("after-environment");
    } else {
        throw new Error("Invalid argument: options");
    }
    if(callback) {
        if(typeof callback !== "function") throw new Error("Invalid argument: callback");
        if(options.watch === true) {
            var watchOptions = (!Array.isArray(options) ? options : options[0]).watchOptions || {};
            // TODO remove this in next major version
            var watchDelay = (!Array.isArray(options) ? options : options[0]).watchDelay;
            if(watchDelay) {
                console.warn("options.watchDelay is deprecated: Use 'options.watchOptions.aggregateTimeout' instead");
                watchOptions.aggregateTimeout = watchDelay;
            }
            return compiler.watch(watchOptions, callback);
        }
        compiler.run(callback);
    }
    return compiler;
}