Skip to content

Commit a068028

Browse files
committed
added require.include
1 parent 7ef74e8 commit a068028

File tree

7 files changed

+78
-1
lines changed

7 files changed

+78
-1
lines changed

lib/WebpackOptionsApply.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ var CommonJsPlugin = require("./dependencies/CommonJsPlugin");
3131
var AMDPlugin = require("./dependencies/AMDPlugin");
3232
var RequireContextPlugin = require("./dependencies/RequireContextPlugin");
3333
var RequireEnsurePlugin = require("./dependencies/RequireEnsurePlugin");
34+
var RequireIncludePlugin = require("./dependencies/RequireIncludePlugin");
3435

3536
var LimitChunkCountPlugin = require("./optimize/LimitChunkCountPlugin");
3637
var MinChunkSizePlugin = require("./optimize/MinChunkSizePlugin");
@@ -107,6 +108,7 @@ WebpackOptionsApply.prototype.process = function(options, compiler) {
107108
new RequireJsStuffPlugin(),
108109
new APIPlugin(),
109110
new ConstPlugin(),
111+
new RequireIncludePlugin(),
110112
new RequireEnsurePlugin(),
111113
new RequireContextPlugin(options.resolve.modulesDirectories, options.resolve.extensions),
112114
new AMDPlugin(options.amd || {}),
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
MIT License http://www.opensource.org/licenses/mit-license.php
3+
Author Tobias Koppers @sokra
4+
*/
5+
var ModuleDependency = require("./ModuleDependency");
6+
7+
function RequireIncludeDependency(request, range) {
8+
ModuleDependency.call(this, request);
9+
this.Class = RequireIncludeDependency;
10+
this.range = range;
11+
}
12+
module.exports = RequireIncludeDependency;
13+
14+
RequireIncludeDependency.prototype = Object.create(ModuleDependency.prototype);
15+
RequireIncludeDependency.prototype.type = "require.include";
16+
17+
RequireIncludeDependency.Template = function RequireIncludeDependencyTemplate() {};
18+
19+
RequireIncludeDependency.Template.prototype.apply = function(dep, source, outputOptions, requestShortener) {
20+
var comment = "";
21+
if(outputOptions.pathinfo && dep.module)
22+
comment = "/*! require.include " + requestShortener.shorten(dep.request) + " */";
23+
source.replace(dep.range[0], dep.range[1]-1,
24+
"undefined" + comment);
25+
};
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*
2+
MIT License http://www.opensource.org/licenses/mit-license.php
3+
Author Tobias Koppers @sokra
4+
*/
5+
var AbstractPlugin = require("../AbstractPlugin");
6+
var RequireIncludeDependency = require("./RequireIncludeDependency");
7+
8+
module.exports = AbstractPlugin.create({
9+
"call require.include": function(expr) {
10+
if(expr.arguments.length != 1) return;
11+
var param = this.evaluateExpression(expr.arguments[0]);
12+
if(!param.isString()) return;
13+
var dep = new RequireIncludeDependency(param.string, expr.range);
14+
dep.loc = expr.loc;
15+
this.state.current.addDependency(dep);
16+
return true;
17+
}
18+
});
19+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
MIT License http://www.opensource.org/licenses/mit-license.php
3+
Author Tobias Koppers @sokra
4+
*/
5+
var RequireIncludeDependency = require("./RequireIncludeDependency");
6+
var RequireIncludeDependencyParserPlugin = require("./RequireIncludeDependencyParserPlugin");
7+
8+
function RequireIncludePlugin() {
9+
}
10+
module.exports = RequireIncludePlugin;
11+
12+
RequireIncludePlugin.prototype.apply = function(compiler) {
13+
compiler.plugin("compilation", function(compilation, params) {
14+
var normalModuleFactory = params.normalModuleFactory;
15+
16+
compilation.dependencyFactories.set(RequireIncludeDependency, normalModuleFactory);
17+
compilation.dependencyTemplates.set(RequireIncludeDependency, new RequireIncludeDependency.Template());
18+
});
19+
new RequireIncludeDependencyParserPlugin().apply(compiler.parser);
20+
};

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-beta21",
3+
"version": "0.9.0-beta22",
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": {

test/browsertest/lib/index.web.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,16 @@ describe("main", function() {
293293
}, "named-chunk");
294294
}
295295
});
296+
297+
it("should accept a require.include call", function() {
298+
require.include("./require.include");
299+
var value = null;
300+
require.ensure([], function(require) {
301+
value = require("./require.include");
302+
});
303+
should.exist(value);
304+
value.should.be.eql("require.include");
305+
});
296306
});
297307

298308
describe("loaders", function() {
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = "require.include";

0 commit comments

Comments
 (0)