moved ConsolePlugin into NodeSourcePlugin

This commit is contained in:
Tobias Koppers 2013-02-26 13:31:05 +01:00
parent 38d3c877dd
commit c4140aac51
6 changed files with 84 additions and 46 deletions

View File

@ -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")) + ")");
});
};

View File

@ -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();

View File

@ -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(),

View File

@ -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"]);

View File

@ -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)
);
}
});
};

View File

@ -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": {