Skip to content

Commit c4140aa

Browse files
committed
moved ConsolePlugin into NodeSourcePlugin
1 parent 38d3c87 commit c4140aa

File tree

6 files changed

+84
-46
lines changed

6 files changed

+84
-46
lines changed

lib/ConsolePlugin.js

Lines changed: 0 additions & 16 deletions
This file was deleted.

lib/NodeStuffPlugin.js

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,47 @@ var ModuleParserHelpers = require("./ModuleParserHelpers");
88
var ConstDependency = require("./dependencies/ConstDependency");
99
var BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
1010

11-
function NodeStuffPlugin() {
11+
function NodeStuffPlugin(options, context) {
12+
this.options = options;
13+
this.context = context;
1214
}
1315
module.exports = NodeStuffPlugin;
1416
NodeStuffPlugin.prototype.apply = function(compiler) {
1517
function ignore() { return true; }
16-
compiler.parser.plugin("expression __filename", function(expr) {
17-
this.state.current.addVariable("__filename", JSON.stringify("/index.js"));
18-
return true;
19-
});
18+
var context = this.context;
19+
if(this.options.__filename) {
20+
compiler.parser.plugin("expression __filename", function(expr) {
21+
this.state.current.addVariable("__filename", JSON.stringify("/index.js"));
22+
return true;
23+
});
24+
} else if(this.options.__filename) {
25+
compiler.parser.plugin("expression __filename", function(expr) {
26+
this.state.current.addVariable("__filename", JSON.stringify(
27+
path.relative(context, this.state.module.resource)
28+
));
29+
return true;
30+
});
31+
}
2032
compiler.parser.plugin("evaluate Identifier __filename", function(expr) {
2133
if(!this.state.module) return;
2234
var res = new BasicEvaluatedExpression();
2335
res.setString(this.state.module.splitQuery(this.state.module.resource)[0]);
2436
res.setRange(expr.range);
2537
return res;
2638
});
27-
compiler.parser.plugin("expression __dirname", function(expr) {
28-
this.state.current.addVariable("__dirname", JSON.stringify("/"));
29-
return true;
30-
});
39+
if(this.options.__dirname == "mock") {
40+
compiler.parser.plugin("expression __dirname", function(expr) {
41+
this.state.current.addVariable("__dirname", JSON.stringify("/"));
42+
return true;
43+
});
44+
} else if(this.options.__dirname) {
45+
compiler.parser.plugin("expression __dirname", function(expr) {
46+
this.state.current.addVariable("__dirname", JSON.stringify(
47+
path.relative(context, this.state.module.context)
48+
));
49+
return true;
50+
});
51+
}
3152
compiler.parser.plugin("evaluate Identifier __dirname", function(expr) {
3253
if(!this.state.module) return;
3354
var res = new BasicEvaluatedExpression();

lib/WebpackOptionsApply.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ var CachePlugin = require("./CachePlugin");
1717

1818
var UglifyJsPlugin = require("./optimize/UglifyJsPlugin");
1919

20-
var ConsolePlugin = require("./ConsolePlugin");
2120
var APIPlugin = require("./APIPlugin");
2221
var ConstPlugin = require("./ConstPlugin");
2322
var RequireJsStuffPlugin = require("./RequireJsStuffPlugin");
@@ -69,14 +68,14 @@ WebpackOptionsApply.prototype.process = function(options, compiler) {
6968
compiler.apply(
7069
new JsonpTemplatePlugin(options.output),
7170
new FunctionModulePlugin(options.context, options.output),
72-
new NodeSourcePlugin()
71+
new NodeSourcePlugin(options.node)
7372
);
7473
break;
7574
case "webworker":
7675
compiler.apply(
7776
new WebWorkerTemplatePlugin(options.output),
7877
new FunctionModulePlugin(options.context, options.output),
79-
new NodeSourcePlugin()
78+
new NodeSourcePlugin(options.node)
8079
);
8180
break;
8281
case "node":
@@ -106,7 +105,7 @@ WebpackOptionsApply.prototype.process = function(options, compiler) {
106105
}
107106
compiler.apply(
108107
new CompatibilityPlugin(),
109-
new NodeStuffPlugin(),
108+
new NodeStuffPlugin(options.node),
110109
new RequireJsStuffPlugin(),
111110
new APIPlugin(),
112111
new ConstPlugin(),
@@ -117,8 +116,6 @@ WebpackOptionsApply.prototype.process = function(options, compiler) {
117116
new CommonJsPlugin(),
118117
new LabeledModulesPlugin()
119118
);
120-
if(options.console)
121-
compiler.apply(new ConsolePlugin());
122119

123120
compiler.apply(
124121
new RemoveParentModulesPlugin(),

lib/WebpackOptionsDefaulter.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,32 @@ function WebpackOptionsDefaulter() {
99
this.set("debug", false);
1010
this.set("devtool", false);
1111
this.set("minimize", true);
12-
12+
1313
this.set("context", process.cwd());
1414
this.set("target", "web");
1515
this.set("output", {});
16+
this.set("node", {});
1617
this.set("optimize", {});
1718
this.set("resolve", {});
1819
this.set("resolveLoader", {});
19-
20+
2021
this.set("output.libraryTarget", "var");
2122
this.set("output.path", "");
2223

24+
this.set("node.console", false);
25+
this.set("node.process", true);
26+
this.set("node.global", true);
27+
this.set("node.__filename", "mock");
28+
this.set("node.__dirname", "mock");
29+
2330
this.set("resolve.modulesDirectories", ["web_modules", "node_modules"]);
2431
this.set("resolveLoader.modulesDirectories", ["web_loaders", "web_modules", "node_loaders", "node_modules"]);
2532

2633
this.set("resolveLoader.moduleTemplates", ["*-webpack-loader", "*-web-loader", "*-loader", "*"]);
2734

2835
this.set("resolve.alias", {});
2936
this.set("resolveLoader.alias", {});
30-
37+
3138
this.set("resolve.extensions", ["", ".webpack.js", ".web.js", ".js"]);
3239
this.set("resolveLoader.extensions", ["", ".webpack-loader.js", ".web-loader.js", ".loader.js", ".js"]);
3340

lib/node/NodeSourcePlugin.js

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,50 @@ var ModuleParserHelpers = require("../ModuleParserHelpers");
88
var ConstDependency = require("../dependencies/ConstDependency");
99
var nodeLibsBrowser = require("node-libs-browser");
1010

11-
function NodeSourcePlugin() {
11+
function NodeSourcePlugin(options) {
12+
this.options = options;
1213
}
1314
module.exports = NodeSourcePlugin;
1415
NodeSourcePlugin.prototype.apply = function(compiler) {
1516
function ignore() { return true; }
16-
compiler.parser.plugin("expression process", function(expr) {
17-
return ModuleParserHelpers.addParsedVariable(this, "process", "require(" + JSON.stringify(nodeLibsBrowser._process) + ")");
18-
});
19-
compiler.parser.plugin("expression global", function(expr) {
20-
this.state.current.addVariable("global", "this");
21-
return true;
22-
});
17+
if(this.options.process == "mock") {
18+
compiler.parser.plugin("expression process", function(expr) {
19+
return ModuleParserHelpers.addParsedVariable(this, "process", "require(" + JSON.stringify(require.resolve("node-libs-browser/mock/_process")) + ")");
20+
});
21+
} else if(this.options.process) {
22+
compiler.parser.plugin("expression process", function(expr) {
23+
return ModuleParserHelpers.addParsedVariable(this, "process", "require(" + JSON.stringify(nodeLibsBrowser._process) + ")");
24+
});
25+
}
26+
if(this.options.global) {
27+
compiler.parser.plugin("expression global", function(expr) {
28+
this.state.current.addVariable("global", "this");
29+
return true;
30+
});
31+
}
32+
if(this.options.console == "mock") {
33+
compiler.parser.plugin("expression console", function(expr) {
34+
return ModuleParserHelpers.addParsedVariable(this, "console", "require(" + JSON.stringify(require.resolve("node-libs-browser/mock/_console")) + ")");
35+
});
36+
} else if(this.options.console) {
37+
compiler.parser.plugin("expression console", function(expr) {
38+
return ModuleParserHelpers.addParsedVariable(this, "console", "require(" + JSON.stringify(require("node-libs-browser")._console) + ")");
39+
});
40+
}
41+
var options = this.options;
2342
compiler.plugin("after-resolvers", function(compiler) {
24-
compiler.resolvers.normal.apply(
25-
new ModuleAliasPlugin(nodeLibsBrowser)
26-
);
43+
var alias = {};
44+
Object.keys(nodeLibsBrowser).forEach(function(lib) {
45+
if(/^_/.test(lib)) return;
46+
if(options[lib] === "mock")
47+
alias[lib] = require.resolve("node-libs-browser/mock/" + lib);
48+
else if(options[lib] || options[lib] === undefined)
49+
alias[lib] = require("node-libs-browser")[lib];
50+
});
51+
if(Object.keys(alias).length > 0) {
52+
compiler.resolvers.normal.apply(
53+
new ModuleAliasPlugin(alias)
54+
);
55+
}
2756
});
2857
};

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "webpack",
3-
"version": "0.9.0-beta31",
3+
"version": "0.9.0-beta32",
44
"author": "Tobias Koppers @sokra",
55
"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.",
66
"dependencies": {

0 commit comments

Comments
 (0)