moved ConsolePlugin into NodeSourcePlugin
This commit is contained in:
parent
38d3c877dd
commit
c4140aac51
|
@ -1,16 +0,0 @@
|
|||
/*
|
||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||
Author Tobias Koppers @sokra
|
||||
*/
|
||||
var path = require("path");
|
||||
var ModuleParserHelpers = require("./ModuleParserHelpers");
|
||||
|
||||
function ConsolePlugin() {
|
||||
}
|
||||
module.exports = ConsolePlugin;
|
||||
ConsolePlugin.prototype.apply = function(compiler) {
|
||||
function ignore() { return true; }
|
||||
compiler.parser.plugin("expression console", function(expr) {
|
||||
return ModuleParserHelpers.addParsedVariable(this, "console", "require(" + JSON.stringify(path.join(__dirname, "..", "buildin", "console.js")) + ")");
|
||||
});
|
||||
};
|
|
@ -8,15 +8,27 @@ var ModuleParserHelpers = require("./ModuleParserHelpers");
|
|||
var ConstDependency = require("./dependencies/ConstDependency");
|
||||
var BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
|
||||
|
||||
function NodeStuffPlugin() {
|
||||
function NodeStuffPlugin(options, context) {
|
||||
this.options = options;
|
||||
this.context = context;
|
||||
}
|
||||
module.exports = NodeStuffPlugin;
|
||||
NodeStuffPlugin.prototype.apply = function(compiler) {
|
||||
function ignore() { return true; }
|
||||
compiler.parser.plugin("expression __filename", function(expr) {
|
||||
this.state.current.addVariable("__filename", JSON.stringify("/index.js"));
|
||||
return true;
|
||||
});
|
||||
var context = this.context;
|
||||
if(this.options.__filename) {
|
||||
compiler.parser.plugin("expression __filename", function(expr) {
|
||||
this.state.current.addVariable("__filename", JSON.stringify("/index.js"));
|
||||
return true;
|
||||
});
|
||||
} else if(this.options.__filename) {
|
||||
compiler.parser.plugin("expression __filename", function(expr) {
|
||||
this.state.current.addVariable("__filename", JSON.stringify(
|
||||
path.relative(context, this.state.module.resource)
|
||||
));
|
||||
return true;
|
||||
});
|
||||
}
|
||||
compiler.parser.plugin("evaluate Identifier __filename", function(expr) {
|
||||
if(!this.state.module) return;
|
||||
var res = new BasicEvaluatedExpression();
|
||||
|
@ -24,10 +36,19 @@ NodeStuffPlugin.prototype.apply = function(compiler) {
|
|||
res.setRange(expr.range);
|
||||
return res;
|
||||
});
|
||||
compiler.parser.plugin("expression __dirname", function(expr) {
|
||||
this.state.current.addVariable("__dirname", JSON.stringify("/"));
|
||||
return true;
|
||||
});
|
||||
if(this.options.__dirname == "mock") {
|
||||
compiler.parser.plugin("expression __dirname", function(expr) {
|
||||
this.state.current.addVariable("__dirname", JSON.stringify("/"));
|
||||
return true;
|
||||
});
|
||||
} else if(this.options.__dirname) {
|
||||
compiler.parser.plugin("expression __dirname", function(expr) {
|
||||
this.state.current.addVariable("__dirname", JSON.stringify(
|
||||
path.relative(context, this.state.module.context)
|
||||
));
|
||||
return true;
|
||||
});
|
||||
}
|
||||
compiler.parser.plugin("evaluate Identifier __dirname", function(expr) {
|
||||
if(!this.state.module) return;
|
||||
var res = new BasicEvaluatedExpression();
|
||||
|
|
|
@ -17,7 +17,6 @@ var CachePlugin = require("./CachePlugin");
|
|||
|
||||
var UglifyJsPlugin = require("./optimize/UglifyJsPlugin");
|
||||
|
||||
var ConsolePlugin = require("./ConsolePlugin");
|
||||
var APIPlugin = require("./APIPlugin");
|
||||
var ConstPlugin = require("./ConstPlugin");
|
||||
var RequireJsStuffPlugin = require("./RequireJsStuffPlugin");
|
||||
|
@ -69,14 +68,14 @@ WebpackOptionsApply.prototype.process = function(options, compiler) {
|
|||
compiler.apply(
|
||||
new JsonpTemplatePlugin(options.output),
|
||||
new FunctionModulePlugin(options.context, options.output),
|
||||
new NodeSourcePlugin()
|
||||
new NodeSourcePlugin(options.node)
|
||||
);
|
||||
break;
|
||||
case "webworker":
|
||||
compiler.apply(
|
||||
new WebWorkerTemplatePlugin(options.output),
|
||||
new FunctionModulePlugin(options.context, options.output),
|
||||
new NodeSourcePlugin()
|
||||
new NodeSourcePlugin(options.node)
|
||||
);
|
||||
break;
|
||||
case "node":
|
||||
|
@ -106,7 +105,7 @@ WebpackOptionsApply.prototype.process = function(options, compiler) {
|
|||
}
|
||||
compiler.apply(
|
||||
new CompatibilityPlugin(),
|
||||
new NodeStuffPlugin(),
|
||||
new NodeStuffPlugin(options.node),
|
||||
new RequireJsStuffPlugin(),
|
||||
new APIPlugin(),
|
||||
new ConstPlugin(),
|
||||
|
@ -117,8 +116,6 @@ WebpackOptionsApply.prototype.process = function(options, compiler) {
|
|||
new CommonJsPlugin(),
|
||||
new LabeledModulesPlugin()
|
||||
);
|
||||
if(options.console)
|
||||
compiler.apply(new ConsolePlugin());
|
||||
|
||||
compiler.apply(
|
||||
new RemoveParentModulesPlugin(),
|
||||
|
|
|
@ -9,17 +9,24 @@ function WebpackOptionsDefaulter() {
|
|||
this.set("debug", false);
|
||||
this.set("devtool", false);
|
||||
this.set("minimize", true);
|
||||
|
||||
|
||||
this.set("context", process.cwd());
|
||||
this.set("target", "web");
|
||||
this.set("output", {});
|
||||
this.set("node", {});
|
||||
this.set("optimize", {});
|
||||
this.set("resolve", {});
|
||||
this.set("resolveLoader", {});
|
||||
|
||||
|
||||
this.set("output.libraryTarget", "var");
|
||||
this.set("output.path", "");
|
||||
|
||||
this.set("node.console", false);
|
||||
this.set("node.process", true);
|
||||
this.set("node.global", true);
|
||||
this.set("node.__filename", "mock");
|
||||
this.set("node.__dirname", "mock");
|
||||
|
||||
this.set("resolve.modulesDirectories", ["web_modules", "node_modules"]);
|
||||
this.set("resolveLoader.modulesDirectories", ["web_loaders", "web_modules", "node_loaders", "node_modules"]);
|
||||
|
||||
|
@ -27,7 +34,7 @@ function WebpackOptionsDefaulter() {
|
|||
|
||||
this.set("resolve.alias", {});
|
||||
this.set("resolveLoader.alias", {});
|
||||
|
||||
|
||||
this.set("resolve.extensions", ["", ".webpack.js", ".web.js", ".js"]);
|
||||
this.set("resolveLoader.extensions", ["", ".webpack-loader.js", ".web-loader.js", ".loader.js", ".js"]);
|
||||
|
||||
|
|
|
@ -8,21 +8,50 @@ var ModuleParserHelpers = require("../ModuleParserHelpers");
|
|||
var ConstDependency = require("../dependencies/ConstDependency");
|
||||
var nodeLibsBrowser = require("node-libs-browser");
|
||||
|
||||
function NodeSourcePlugin() {
|
||||
function NodeSourcePlugin(options) {
|
||||
this.options = options;
|
||||
}
|
||||
module.exports = NodeSourcePlugin;
|
||||
NodeSourcePlugin.prototype.apply = function(compiler) {
|
||||
function ignore() { return true; }
|
||||
compiler.parser.plugin("expression process", function(expr) {
|
||||
return ModuleParserHelpers.addParsedVariable(this, "process", "require(" + JSON.stringify(nodeLibsBrowser._process) + ")");
|
||||
});
|
||||
compiler.parser.plugin("expression global", function(expr) {
|
||||
this.state.current.addVariable("global", "this");
|
||||
return true;
|
||||
});
|
||||
if(this.options.process == "mock") {
|
||||
compiler.parser.plugin("expression process", function(expr) {
|
||||
return ModuleParserHelpers.addParsedVariable(this, "process", "require(" + JSON.stringify(require.resolve("node-libs-browser/mock/_process")) + ")");
|
||||
});
|
||||
} else if(this.options.process) {
|
||||
compiler.parser.plugin("expression process", function(expr) {
|
||||
return ModuleParserHelpers.addParsedVariable(this, "process", "require(" + JSON.stringify(nodeLibsBrowser._process) + ")");
|
||||
});
|
||||
}
|
||||
if(this.options.global) {
|
||||
compiler.parser.plugin("expression global", function(expr) {
|
||||
this.state.current.addVariable("global", "this");
|
||||
return true;
|
||||
});
|
||||
}
|
||||
if(this.options.console == "mock") {
|
||||
compiler.parser.plugin("expression console", function(expr) {
|
||||
return ModuleParserHelpers.addParsedVariable(this, "console", "require(" + JSON.stringify(require.resolve("node-libs-browser/mock/_console")) + ")");
|
||||
});
|
||||
} else if(this.options.console) {
|
||||
compiler.parser.plugin("expression console", function(expr) {
|
||||
return ModuleParserHelpers.addParsedVariable(this, "console", "require(" + JSON.stringify(require("node-libs-browser")._console) + ")");
|
||||
});
|
||||
}
|
||||
var options = this.options;
|
||||
compiler.plugin("after-resolvers", function(compiler) {
|
||||
compiler.resolvers.normal.apply(
|
||||
new ModuleAliasPlugin(nodeLibsBrowser)
|
||||
);
|
||||
var alias = {};
|
||||
Object.keys(nodeLibsBrowser).forEach(function(lib) {
|
||||
if(/^_/.test(lib)) return;
|
||||
if(options[lib] === "mock")
|
||||
alias[lib] = require.resolve("node-libs-browser/mock/" + lib);
|
||||
else if(options[lib] || options[lib] === undefined)
|
||||
alias[lib] = require("node-libs-browser")[lib];
|
||||
});
|
||||
if(Object.keys(alias).length > 0) {
|
||||
compiler.resolvers.normal.apply(
|
||||
new ModuleAliasPlugin(alias)
|
||||
);
|
||||
}
|
||||
});
|
||||
};
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "webpack",
|
||||
"version": "0.9.0-beta31",
|
||||
"version": "0.9.0-beta32",
|
||||
"author": "Tobias Koppers @sokra",
|
||||
"description": "Packs CommonJs/AMD Modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jade, coffee, css, less, ... and your custom stuff.",
|
||||
"dependencies": {
|
||||
|
|
Loading…
Reference in New Issue