diff --git a/lib/APIPlugin.js b/lib/APIPlugin.js index 4ad2fb178..66e8771fa 100644 --- a/lib/APIPlugin.js +++ b/lib/APIPlugin.js @@ -10,10 +10,10 @@ function APIPlugin() { module.exports = APIPlugin; var REPLACEMENTS = { - __webpack_public_path__: "require.p", - __webpack_require__: "require", - __webpack_modules__: "require.modules", - __webpack_chunk_load__: "require.e", + __webpack_public_path__: "__webpack_require__.p", + __webpack_modules__: "__webpack_require__.m", + __webpack_chunk_load__: "__webpack_require__.e", + "require.onError": "__webpack_require__.onError", }; var REPLACEMENT_TYPES = { __webpack_public_path__: "string", @@ -22,8 +22,6 @@ var REPLACEMENT_TYPES = { __webpack_chunk_load__: "function", }; var IGNORES = [ - "call require.valueOf", - "expression require.onError", ]; APIPlugin.prototype.apply = function(compiler) { Object.keys(REPLACEMENTS).forEach(function(key) { diff --git a/lib/ContextModule.js b/lib/ContextModule.js index 69cd27101..6359012d7 100644 --- a/lib/ContextModule.js +++ b/lib/ContextModule.js @@ -87,7 +87,7 @@ ContextModule.prototype.source = function(dependencyTemplates, outputOptions, re var str = [ "var map = ", JSON.stringify(map, null, "\t"), ";\n", "function webpackContext(req) {\n", - "\treturn require(webpackContextResolve(req));\n", + "\treturn __webpack_require__(webpackContextResolve(req));\n", "};\n", "function webpackContextResolve(req) {\n", "\treturn map[req] || (function() { throw new Error(\"Cannot find module '\" + req + \"'.\") }());\n", diff --git a/lib/FunctionModuleTemplate.js b/lib/FunctionModuleTemplate.js index 172cee25f..974ca260e 100644 --- a/lib/FunctionModuleTemplate.js +++ b/lib/FunctionModuleTemplate.js @@ -19,7 +19,7 @@ FunctionModuleTemplate.prototype.render = function(module, dependencyTemplates, source.add(" !*** " + req.replace(/\*\//g, "*_/") + " ***!\n"); source.add(" \\****" + req.replace(/./g, "*") + "****/\n"); } - source.add("/***/ function(" + ["module", "exports", "require"].concat(module.arguments || []).join(", ") + ") {\n\n"); + source.add("/***/ function(" + ["module", "exports", "__webpack_require__"].concat(module.arguments || []).join(", ") + ") {\n\n"); source.add(new PrefixSource(this.outputOptions.sourcePrefix, module.source(dependencyTemplates, this.outputOptions, this.requestShortener))); source.add("\n\n/***/ }"); return source; diff --git a/lib/MainTemplate.js b/lib/MainTemplate.js index f906b99ad..d4513209b 100644 --- a/lib/MainTemplate.js +++ b/lib/MainTemplate.js @@ -13,7 +13,7 @@ function MainTemplate(outputOptions) { module.exports = MainTemplate; MainTemplate.prototype = Object.create(Template.prototype); -MainTemplate.prototype.requireFn = "require"; +MainTemplate.prototype.requireFn = "__webpack_require__"; MainTemplate.prototype.render = function(hash, chunk, moduleTemplate, dependencyTemplates) { var buf = []; buf.push(this.asString(this.renderAdditions(hash, chunk, moduleTemplate, dependencyTemplates))); @@ -121,11 +121,11 @@ MainTemplate.prototype.renderRequireExtensions = function(hash, chunk) { } buf.push(""); buf.push("// expose the modules object (__webpack_modules__)"); - buf.push(this.requireFn + ".modules = modules;"); + buf.push(this.requireFn + ".m = modules;"); buf.push(""); buf.push("// expose the module cache"); - buf.push(this.requireFn + ".cache = installedModules;"); + buf.push(this.requireFn + ".c = installedModules;"); var publicPath = this.outputOptions.publicPath || ""; publicPath = publicPath.replace(Template.REGEXP_HASH, hash); diff --git a/lib/MultiModule.js b/lib/MultiModule.js index 0583300c3..9eb90d024 100644 --- a/lib/MultiModule.js +++ b/lib/MultiModule.js @@ -41,7 +41,7 @@ MultiModule.prototype.source = function(dependencyTemplates, outputOptions, requ if(dep.module) { if(idx == this.dependencies.length - 1) str.push("module.exports = "); - str.push("require("); + str.push("__webpack_require__("); if(outputOptions.pathinfo) str.push("/*! "+dep.request+" */"); str.push(""+dep.module.id); diff --git a/lib/NodeStuffPlugin.js b/lib/NodeStuffPlugin.js index e491dc37e..fa0d7702f 100644 --- a/lib/NodeStuffPlugin.js +++ b/lib/NodeStuffPlugin.js @@ -57,7 +57,7 @@ NodeStuffPlugin.prototype.apply = function(compiler) { return res; }); compiler.parser.plugin("expression require.main", function(expr) { - var dep = new ConstDependency("require.cache[0]", expr.range); + var dep = new ConstDependency("__webpack_require__.c[0]", expr.range); dep.loc = expr.loc; this.state.current.addDependency(dep); return true; diff --git a/lib/NormalModule.js b/lib/NormalModule.js index 203c15759..66638927c 100644 --- a/lib/NormalModule.js +++ b/lib/NormalModule.js @@ -125,9 +125,9 @@ NormalModule.prototype.source = function(dependencyTemplates, outputOptions, req function emitFunction() { if(varNames.length == 0) return; - varStartCode += "/* WEBPACK VAR INJECTION */(function(require, " + varNames.join(", ") + ") {"; + varStartCode += "/* WEBPACK VAR INJECTION */(function(" + varNames.join(", ") + ") {"; // exports === this in the topLevelBlock, but exports do compress better... - varEndCode = (topLevelBlock === block ? "}.call(exports, require, " : "}.call(this, require, ") + + varEndCode = (topLevelBlock === block ? "}.call(exports, " : "}.call(this, ") + varExpressions.map(function(e) {return e.source()}).join(", ") + "))" + varEndCode; varNames.length = 0; diff --git a/lib/RequireJsStuffPlugin.js b/lib/RequireJsStuffPlugin.js index c82e00813..a24b05872 100644 --- a/lib/RequireJsStuffPlugin.js +++ b/lib/RequireJsStuffPlugin.js @@ -25,7 +25,7 @@ RequireJsStuffPlugin.prototype.apply = function(compiler) { return true; }); compiler.parser.plugin("expression requirejs.onError", function(expr) { - var dep = new ConstDependency(JSON.stringify("require.onError"), expr.range); + var dep = new ConstDependency(JSON.stringify("__webpack_require__.onError"), expr.range); dep.loc = expr.loc; this.state.current.addDependency(dep); return true; diff --git a/lib/dependencies/AMDDefineDependency.js b/lib/dependencies/AMDDefineDependency.js index 8e896c13f..99a62454d 100644 --- a/lib/dependencies/AMDDefineDependency.js +++ b/lib/dependencies/AMDDefineDependency.js @@ -31,7 +31,7 @@ AMDDefineDependency.Template.prototype.apply = function(dep, source, outputOptio source.insert(0, "var " + localModuleVar + ";"); source.replace(dep.range[0], dep.functionRange[0]-1, "!(" + localModuleVar + " = ("); - source.replace(dep.functionRange[1], dep.range[1]-1, ".call(exports, require, exports, module)))"); + source.replace(dep.functionRange[1], dep.range[1]-1, ".call(exports, __webpack_require__, exports, module)))"); } else if(dep.arrayRange && dep.functionRange && !dep.objectRange) { source.insert(0, "var __WEBPACK_AMD_DEFINE_ARRAY__, " + localModuleVar + ";"); source.replace(dep.range[0], dep.arrayRange[0]-1, @@ -42,7 +42,7 @@ AMDDefineDependency.Template.prototype.apply = function(dep, source, outputOptio source.insert(0, "var __WEBPACK_AMD_DEFINE_FACTORY__, " + localModuleVar + ";"); source.replace(dep.range[0], dep.functionRange[0]-1, "!(__WEBPACK_AMD_DEFINE_FACTORY__ = ("); - source.replace(dep.functionRange[1], dep.range[1]-1, "), (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (" + localModuleVar + " = __WEBPACK_AMD_DEFINE_FACTORY__.call(exports, require, exports, module)) : " + localModuleVar + " = __WEBPACK_AMD_DEFINE_FACTORY__))"); + source.replace(dep.functionRange[1], dep.range[1]-1, "), (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (" + localModuleVar + " = __WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : " + localModuleVar + " = __WEBPACK_AMD_DEFINE_FACTORY__))"); } } else { if(dep.objectRange && !dep.functionRange) { @@ -53,7 +53,7 @@ AMDDefineDependency.Template.prototype.apply = function(dep, source, outputOptio source.insert(0, "var __WEBPACK_AMD_DEFINE_RESULT__;"); source.replace(dep.range[0], dep.functionRange[0]-1, "!(__WEBPACK_AMD_DEFINE_RESULT__ = ("); - source.replace(dep.functionRange[1], dep.range[1]-1, ".call(exports, require, exports, module)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))"); + source.replace(dep.functionRange[1], dep.range[1]-1, ".call(exports, __webpack_require__, exports, module)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))"); } else if(dep.arrayRange && dep.functionRange && !dep.objectRange) { source.insert(0, "var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"); source.replace(dep.range[0], dep.arrayRange[0]-1, @@ -64,7 +64,7 @@ AMDDefineDependency.Template.prototype.apply = function(dep, source, outputOptio source.insert(0, "var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;"); source.replace(dep.range[0], dep.functionRange[0]-1, "!(__WEBPACK_AMD_DEFINE_FACTORY__ = ("); - source.replace(dep.functionRange[1], dep.range[1]-1, "), (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_RESULT__ = __WEBPACK_AMD_DEFINE_FACTORY__.call(exports, require, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : module.exports = __WEBPACK_AMD_DEFINE_FACTORY__))"); + source.replace(dep.functionRange[1], dep.range[1]-1, "), (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_RESULT__ = __WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : module.exports = __WEBPACK_AMD_DEFINE_FACTORY__))"); } } }; diff --git a/lib/dependencies/AMDDefineDependencyParserPlugin.js b/lib/dependencies/AMDDefineDependencyParserPlugin.js index f37fe30b7..b5aa084ba 100644 --- a/lib/dependencies/AMDDefineDependencyParserPlugin.js +++ b/lib/dependencies/AMDDefineDependencyParserPlugin.js @@ -140,7 +140,7 @@ module.exports = AbstractPlugin.create({ if(param.isArray()) { param.items.forEach(function(param, idx) { if(param.isString() && ["require", "module", "exports"].indexOf(param.string) >= 0) - identifiers[idx] = param.string; + identifiers[idx] = param.string === "require" ? "__webpack_require__" : param.string; var result = this.applyPluginsBailResult("call define:amd:item", expr, param); if(result === undefined) { this.applyPluginsBailResult("call define:amd:context", expr, param); @@ -151,7 +151,10 @@ module.exports = AbstractPlugin.create({ var deps = []; param.array.forEach(function(request, idx) { var dep, localModule; - if(["require", "exports", "module"].indexOf(request) >= 0) { + if(request === "require") { + identifiers[idx] = request; + dep = "__webpack_require__"; + } else if(["exports", "module"].indexOf(request) >= 0) { identifiers[idx] = request; dep = request; } else if(localModule = LocalModulesHelpers.getLocalModule(this.state, request)) { @@ -184,7 +187,9 @@ module.exports = AbstractPlugin.create({ return true; } else if(param.isString()) { var dep, localModule; - if(["require", "exports", "module"].indexOf(param.string) >= 0) { + if(param.string === "require") { + dep = new ConstDependency("__webpack_require__", param.range); + } else if(["require", "exports", "module"].indexOf(param.string) >= 0) { dep = new ConstDependency(param.string, param.range); } else if(localModule = LocalModulesHelpers.getLocalModule(this.state, param.string)) { dep = new LocalModuleDependency(localModule, param.range); diff --git a/lib/dependencies/AMDRequireArrayDependency.js b/lib/dependencies/AMDRequireArrayDependency.js index a084b09fc..a65395897 100644 --- a/lib/dependencies/AMDRequireArrayDependency.js +++ b/lib/dependencies/AMDRequireArrayDependency.js @@ -25,7 +25,7 @@ AMDRequireArrayDependency.Template.prototype.apply = function(dep, source, outpu var comment = ""; if(outputOptions.pathinfo) comment = "/*! " + requestShortener.shorten(dep.request) + " */ "; if(dep.module) - return "require(" + comment + dep.module.id + ")"; + return "__webpack_require__(" + comment + dep.module.id + ")"; else return "(function webpackMissingModule() { throw new Error(" + JSON.stringify("Cannot find module \"" + dep.request + "\"") + "); }())"; } diff --git a/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js b/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js index 46e0aa321..92dce7364 100644 --- a/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +++ b/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js @@ -69,7 +69,9 @@ module.exports = AbstractPlugin.create({ var deps = []; param.array.forEach(function(request) { var dep, localModule; - if(["require", "exports", "module"].indexOf(request) >= 0) { + if(request === "require") { + dep = "__webpack_require__"; + } else if(["exports", "module"].indexOf(request) >= 0) { dep = request; } else if(localModule = LocalModulesHelpers.getLocalModule(this.state, request)) { dep = new LocalModuleDependency(localModule); @@ -101,7 +103,9 @@ module.exports = AbstractPlugin.create({ return true; } else if(param.isString()) { var dep, localModule; - if(["require","exports","module"].indexOf(param.string) >= 0) { + if(param.string === "require") { + dep = new ConstDependency("__webpack_require__", param.string); + } else if(["exports", "module"].indexOf(param.string) >= 0) { dep = new ConstDependency(param.string, param.range); } else if(localModule = LocalModulesHelpers.getLocalModule(this.state, param.string)) { dep = new LocalModuleDependency(localModule, param.range); diff --git a/lib/dependencies/AMDRequireDependency.js b/lib/dependencies/AMDRequireDependency.js index 53004a4a1..d30b8d6c0 100644 --- a/lib/dependencies/AMDRequireDependency.js +++ b/lib/dependencies/AMDRequireDependency.js @@ -21,7 +21,7 @@ AMDRequireDependency.Template.prototype.apply = function(dep, source, outputOpti if(depBlock.arrayRange && !depBlock.functionRange) { if(typeof chunkId === "number") { source.replace(depBlock.outerRange[0], depBlock.arrayRange[0]-1, - "require.e/* require */(" + chunkId + asComment(depBlock.chunkReason) + ", function(require) {"); + "__webpack_require__.e/* require */(" + chunkId + asComment(depBlock.chunkReason) + ", function(__webpack_require__) {"); source.replace(depBlock.arrayRange[1], depBlock.outerRange[1]-1, ";})"); } else { source.replace(depBlock.outerRange[0], depBlock.arrayRange[0]-1, @@ -31,17 +31,17 @@ AMDRequireDependency.Template.prototype.apply = function(dep, source, outputOpti } else if(!depBlock.arrayRange && depBlock.functionRange) { if(typeof chunkId === "number") { source.replace(depBlock.outerRange[0], depBlock.functionRange[0]-1, - "require.e/* require */(" + chunkId + asComment(depBlock.chunkReason) + ", function(require) {("); - source.replace(depBlock.functionRange[1], depBlock.outerRange[1]-1, ".call(exports, require, exports, module));})"); + "__webpack_require__.e/* require */(" + chunkId + asComment(depBlock.chunkReason) + ", function(__webpack_require__) {("); + source.replace(depBlock.functionRange[1], depBlock.outerRange[1]-1, ".call(exports, __webpack_require__, exports, module));})"); } else { source.replace(depBlock.outerRange[0], depBlock.functionRange[0]-1, "!/* require */(" + asComment(depBlock.chunkReason)); - source.replace(depBlock.functionRange[1], depBlock.outerRange[1]-1, ".call(exports, require, exports, module))"); + source.replace(depBlock.functionRange[1], depBlock.outerRange[1]-1, ".call(exports, __webpack_require__, exports, module))"); } } else if(depBlock.arrayRange && depBlock.functionRange) { if(typeof chunkId === "number") { source.replace(depBlock.outerRange[0], depBlock.arrayRange[0]-1, - "require.e/* require */(" + chunkId + asComment(depBlock.chunkReason) + ", function(require) { "); + "__webpack_require__.e/* require */(" + chunkId + asComment(depBlock.chunkReason) + ", function(__webpack_require__) { "); source.insert(depBlock.arrayRange[0] + 0.9, "var __WEBPACK_AMD_REQUIRE_ARRAY__ = "); source.replace(depBlock.arrayRange[1], depBlock.functionRange[0]-1, "; ("); source.insert(depBlock.functionRange[1], ".apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));"); diff --git a/lib/dependencies/CommonJsPlugin.js b/lib/dependencies/CommonJsPlugin.js index 4fc5ff3b5..8d279008f 100644 --- a/lib/dependencies/CommonJsPlugin.js +++ b/lib/dependencies/CommonJsPlugin.js @@ -2,6 +2,7 @@ MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ +var ConstDependency = require("./ConstDependency"); var CommonJsRequireDependency = require("./CommonJsRequireDependency"); var CommonJsRequireContextDependency = require("./CommonJsRequireContextDependency"); var RequireResolveDependency = require("./RequireResolveDependency"); @@ -50,11 +51,17 @@ CommonJsPlugin.prototype.apply = function(compiler) { return new BasicEvaluatedExpression().setString("object").setRange(expr.range); }); compiler.parser.plugin("assign require", function(expr) { - // ignore assigning to require + // to not leak to global "require", we need to define a local require here. + var dep = new ConstDependency("var require;", 0); + dep.loc = expr.loc; + this.state.current.addDependency(dep); return true; }); compiler.parser.plugin("rename require", function(expr) { - // this is allowed and nothing to do (currently) + // define to require variable. It's still undefined, but not not defined. + var dep = new ConstDependency("var require;", 0); + dep.loc = expr.loc; + this.state.current.addDependency(dep); return false; }); compiler.parser.plugin("typeof module", function(expr) { diff --git a/lib/dependencies/CommonJsRequireDependencyParserPlugin.js b/lib/dependencies/CommonJsRequireDependencyParserPlugin.js index 596f9e063..61d3ab98e 100644 --- a/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +++ b/lib/dependencies/CommonJsRequireDependencyParserPlugin.js @@ -13,6 +13,9 @@ var LocalModulesHelpers = require("./LocalModulesHelpers"); module.exports = AbstractPlugin.create({ "expression require.cache": function(expr) { + var dep = new ConstDependency("__webpack_require__.c", expr.range); + dep.loc = expr.loc; + this.state.current.addDependency(dep); return true; }, "expression require": function(expr) { diff --git a/lib/dependencies/ConstDependency.js b/lib/dependencies/ConstDependency.js index 3a0c0f813..dcf8b55ed 100644 --- a/lib/dependencies/ConstDependency.js +++ b/lib/dependencies/ConstDependency.js @@ -17,5 +17,8 @@ ConstDependency.prototype = Object.create(NullDependency.prototype); ConstDependency.Template = function ConstDependencyTemplate() {}; ConstDependency.Template.prototype.apply = function(dep, source, outputOptions, requestShortener) { - source.replace(dep.range[0], dep.range[1]-1, dep.expression); + if(typeof dep.range === "number") + source.insert(dep.range, dep.expression); + else + source.replace(dep.range[0], dep.range[1]-1, dep.expression); } diff --git a/lib/dependencies/ContextDependencyTemplateAsId.js b/lib/dependencies/ContextDependencyTemplateAsId.js index bd076e877..66ab25d5b 100644 --- a/lib/dependencies/ContextDependencyTemplateAsId.js +++ b/lib/dependencies/ContextDependencyTemplateAsId.js @@ -11,9 +11,9 @@ ContextDependencyTemplateAsId.prototype.apply = function(dep, source, outputOpti if(dep.module) { if(dep.valueRange) { source.replace(dep.valueRange[1], dep.range[1]-1, ")"); - source.replace(dep.range[0], dep.valueRange[0]-1, "require(" + comment + dep.module.id + ").resolve(" + (typeof dep.prepend == "string" ? JSON.stringify(dep.prepend) : "") + ""); + source.replace(dep.range[0], dep.valueRange[0]-1, "__webpack_require__(" + comment + dep.module.id + ").resolve(" + (typeof dep.prepend == "string" ? JSON.stringify(dep.prepend) : "") + ""); } else { - source.replace(dep.range[0], dep.range[1]-1, "require(" + comment + dep.module.id + ").resolve"); + source.replace(dep.range[0], dep.range[1]-1, "__webpack_require__(" + comment + dep.module.id + ").resolve"); } } else { var content = "!(function webpackMissingModule() { throw new Error(" + JSON.stringify("Cannot find module \"" + dep.request + "\"") + "); }())"; diff --git a/lib/dependencies/ContextDependencyTemplateAsRequireCall.js b/lib/dependencies/ContextDependencyTemplateAsRequireCall.js index eeb5c8eb2..1111c761d 100644 --- a/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +++ b/lib/dependencies/ContextDependencyTemplateAsRequireCall.js @@ -11,9 +11,9 @@ ContextDependencyTemplateAsRequireCall.prototype.apply = function(dep, source, o if(dep.module) { if(dep.valueRange) { source.replace(dep.valueRange[1], dep.range[1]-1, ")"); - source.replace(dep.range[0], dep.valueRange[0]-1, "require(" + comment + dep.module.id + ")(" + (typeof dep.prepend == "string" ? JSON.stringify(dep.prepend) : "") + ""); + source.replace(dep.range[0], dep.valueRange[0]-1, "__webpack_require__(" + comment + dep.module.id + ")(" + (typeof dep.prepend == "string" ? JSON.stringify(dep.prepend) : "") + ""); } else { - source.replace(dep.range[0], dep.range[1]-1, "require(" + comment + dep.module.id + ")"); + source.replace(dep.range[0], dep.range[1]-1, "__webpack_require__(" + comment + dep.module.id + ")"); } } else { var content = "!(function webpackMissingModule() { throw new Error(" + JSON.stringify("Cannot find module \"" + dep.request + "\"") + "); }())"; diff --git a/lib/dependencies/LabeledModuleDependency.js b/lib/dependencies/LabeledModuleDependency.js index 2f8739300..dd4891bb2 100644 --- a/lib/dependencies/LabeledModuleDependency.js +++ b/lib/dependencies/LabeledModuleDependency.js @@ -20,7 +20,7 @@ LabeledModuleDependency.Template.prototype.apply = function(dep, source, outputO var comment = ""; if(outputOptions.pathinfo) comment = "/*! " + requestShortener.shorten(dep.request) + " */ "; if(dep.module && dep.module.meta && dep.module.meta.exports) { - var content = "var __WEBPACK_LABELED_MODULE__" + dep.module.id + " = require(" + comment + dep.module.id + ")"; + var content = "var __WEBPACK_LABELED_MODULE__" + dep.module.id + " = __webpack_require__(" + comment + dep.module.id + ")"; dep.module.meta.exports.forEach(function(e) { content += ", " + e + " = __WEBPACK_LABELED_MODULE__" + dep.module.id + "." + e; }); diff --git a/lib/dependencies/ModuleDependencyTemplateAsRequireId.js b/lib/dependencies/ModuleDependencyTemplateAsRequireId.js index 1a83225db..093602a1c 100644 --- a/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +++ b/lib/dependencies/ModuleDependencyTemplateAsRequireId.js @@ -10,7 +10,7 @@ ModuleDependencyTemplateAsRequireId.prototype.apply = function(dep, source, outp var comment = ""; if(outputOptions.pathinfo) comment = "/*! " + requestShortener.shorten(dep.request) + " */ "; if(dep.module) - var content = "require(" + comment + dep.module.id + ")"; + var content = "__webpack_require__(" + comment + dep.module.id + ")"; else var content = "!(function webpackMissingModule() { throw new Error(" + JSON.stringify("Cannot find module \"" + dep.request + "\"") + "); }())"; source.replace(dep.range[0], dep.range[1]-1, content); @@ -18,5 +18,5 @@ ModuleDependencyTemplateAsRequireId.prototype.apply = function(dep, source, outp ModuleDependencyTemplateAsRequireId.prototype.applyAsTemplateArgument = function(name, dep, source, outputOptions, requestShortener) { if(!dep.range) return; - source.replace(dep.range[0], dep.range[1]-1, "(require(" + name + "))"); + source.replace(dep.range[0], dep.range[1]-1, "(__webpack_require__(" + name + "))"); }; diff --git a/lib/dependencies/RequireEnsureDependency.js b/lib/dependencies/RequireEnsureDependency.js index 94a0552bd..8bd931a02 100644 --- a/lib/dependencies/RequireEnsureDependency.js +++ b/lib/dependencies/RequireEnsureDependency.js @@ -24,11 +24,11 @@ RequireEnsureDependency.Template.prototype.apply = function(dep, source, outputO source.replace(depBlock.chunkNameRange[0], depBlock.chunkNameRange[1]-1, comment + "0"); } if(depBlock.chunk && !depBlock.chunk.entry && typeof depBlock.chunk.id === "number") { - source.replace(depBlock.expr.callee.range[0], depBlock.expr.callee.range[1]-1, "require.e/*nsure*/"); + source.replace(depBlock.expr.callee.range[0], depBlock.expr.callee.range[1]-1, "__webpack_require__.e/*nsure*/"); source.replace(depBlock.expr.arguments[0].range[0], depBlock.expr.arguments[0].range[1]-1, (depBlock.chunk.id) + "" + asComment(depBlock.chunkReason)); } else { source.replace(depBlock.expr.range[0], depBlock.expr.arguments[1].range[0]-1, "!/*require.ensure*/("); - source.replace(depBlock.expr.arguments[1].range[1], depBlock.expr.range[1]-1, "(require))"); + source.replace(depBlock.expr.arguments[1].range[1], depBlock.expr.range[1]-1, "(__webpack_require__))"); } } diff --git a/lib/dependencies/RequireHeaderDependency.js b/lib/dependencies/RequireHeaderDependency.js index 3b206c363..b804ebe29 100644 --- a/lib/dependencies/RequireHeaderDependency.js +++ b/lib/dependencies/RequireHeaderDependency.js @@ -17,7 +17,7 @@ RequireHeaderDependency.prototype = Object.create(NullDependency.prototype); RequireHeaderDependency.Template = function RequireHeaderDependencyTemplate() {}; RequireHeaderDependency.Template.prototype.apply = function(dep, source) { - source.replace(dep.range[0], dep.range[1]-1, "require"); + source.replace(dep.range[0], dep.range[1]-1, "__webpack_require__"); }; RequireHeaderDependency.Template.prototype.applyAsTemplateArgument = function(name, dep, source, outputOptions, requestShortener) { diff --git a/lib/node/NodeMainTemplate.js b/lib/node/NodeMainTemplate.js index f34577bda..dd4c250c7 100644 --- a/lib/node/NodeMainTemplate.js +++ b/lib/node/NodeMainTemplate.js @@ -14,7 +14,6 @@ module.exports = NodeMainTemplate; NodeMainTemplate.prototype = Object.create(MainTemplate.prototype); NodeMainTemplate.prototype.constructor = NodeMainTemplate; -NodeMainTemplate.prototype.requireFn = "webpackRequire"; NodeMainTemplate.prototype.renderLocalVars = function(hash, chunk) { var buf = MainTemplate.prototype.renderLocalVars.call(this, hash, chunk); if(chunk.chunks.length > 0) { @@ -96,12 +95,6 @@ NodeMainTemplate.prototype.renderRequireEnsure = function(hash, chunk) { } }; -NodeMainTemplate.prototype.renderRequireExtensions = function(hash, chunk) { - var buf = MainTemplate.prototype.renderRequireExtensions.call(this, hash, chunk); - buf.push(this.requireFn + ".parentRequire = require;"); - return buf; -}; - NodeMainTemplate.prototype.renderHotModuleReplacementInit = function(hash, chunk) { var hotUpdateChunkFilename = this.outputOptions.hotUpdateChunkFilename; var hotUpdateMainFilename = this.outputOptions.hotUpdateMainFilename; diff --git a/lib/node/NodeTargetPlugin.js b/lib/node/NodeTargetPlugin.js index cf7c004cd..f6e7ebf5f 100644 --- a/lib/node/NodeTargetPlugin.js +++ b/lib/node/NodeTargetPlugin.js @@ -54,7 +54,7 @@ NodeNativeModule.prototype.identifier = NodeNativeModule.prototype.readableIdent NodeNativeModule.prototype.build = function(options, compilation, resolver, fs, callback) {callback()}; NodeNativeModule.prototype.source = function() { - return new RawSource("module.exports = require.parentRequire(" + JSON.stringify(this.request) + ");"); + return new RawSource("module.exports = require(" + JSON.stringify(this.request) + ");"); }; NodeNativeModule.prototype.needRebuild = function() { diff --git a/test/Compiler.test.js b/test/Compiler.test.js index 9fc80740e..471208286 100644 --- a/test/Compiler.test.js +++ b/test/Compiler.test.js @@ -60,8 +60,8 @@ describe("Compiler", function() { files.should.have.property("bundle.js").have.type("string"); Object.keys(files).should.be.eql(["bundle.js"]); var bundle = files["bundle.js"]; - bundle.should.include("function require("); - bundle.should.include("require(/*! ./a */ 1);"); + bundle.should.include("function __webpack_require__("); + bundle.should.include("__webpack_require__(/*! ./a */ 1);"); bundle.should.include("FIXDIR/c.js"); bundle.should.include("FIXDIR/a.js"); bundle.should.include("This is a"); @@ -78,8 +78,8 @@ describe("Compiler", function() { files.should.have.property("bundle.js").have.type("string"); Object.keys(files).should.be.eql(["bundle.js"]); var bundle = files["bundle.js"]; - bundle.should.include("function require("); - bundle.should.include("require(/*! ./a */"); + bundle.should.include("function __webpack_require__("); + bundle.should.include("__webpack_require__(/*! ./a */"); bundle.should.include("FIXDIR/main1.js"); bundle.should.include("FIXDIR/a.js"); bundle.should.include("FIXDIR/b.js"); @@ -99,10 +99,10 @@ describe("Compiler", function() { files.should.have.property("bundle.js").have.type("string"); Object.keys(files).should.be.eql(["bundle.js"]); var bundle = files["bundle.js"]; - bundle.should.include("function require("); - bundle.should.include("require(/*! ./a */"); - bundle.should.include("require(/*! ./b */"); - bundle.should.include("require(/*! ./c */"); + bundle.should.include("function __webpack_require__("); + bundle.should.include("__webpack_require__(/*! ./a */"); + bundle.should.include("__webpack_require__(/*! ./b */"); + bundle.should.include("__webpack_require__(/*! ./c */"); bundle.should.include("FIXDIR/abc.js"); bundle.should.include("FIXDIR/a.js"); bundle.should.include("FIXDIR/b.js"); @@ -125,9 +125,9 @@ describe("Compiler", function() { Object.keys(files).should.be.eql(["bundle.js", "1.bundle.js"]); var bundle = files["bundle.js"]; var chunk = files["1.bundle.js"]; - bundle.should.include("function require("); - bundle.should.include("require(/*! ./b */"); - chunk.should.not.include("require(/* ./b */"); + bundle.should.include("function __webpack_require__("); + bundle.should.include("__webpack_require__(/*! ./b */"); + chunk.should.not.include("__webpack_require__(/* ./b */"); bundle.should.include("FIXDIR/chunks.js"); chunk.should.include("FIXDIR/a.js"); chunk.should.include("FIXDIR/b.js"); diff --git a/test/cases/parsing/context/index.js b/test/cases/parsing/context/index.js index e97e42229..ecf2e7c62 100644 --- a/test/cases/parsing/context/index.js +++ b/test/cases/parsing/context/index.js @@ -21,3 +21,10 @@ it("should be able to require.resolve with automatical context", function() { var template = "tmpl"; require.resolve("./templates/" + template).should.be.eql(require.resolve("./templates/tmpl")); }); + +it("should be able to use renaming combined with a context", function() { + var renamedRequire = require; + require = function () {}; + var template = "tmpl"; + renamedRequire("./templates/" + template).should.be.eql("test template"); +}); \ No newline at end of file diff --git a/test/cases/parsing/extract-amd/index.js b/test/cases/parsing/extract-amd/index.js index 739dbdb15..1ee717500 100644 --- a/test/cases/parsing/extract-amd/index.js +++ b/test/cases/parsing/extract-amd/index.js @@ -99,12 +99,10 @@ it("should be able to use require.js-style define, with an object", function() { }); it("should offer AMD-style define for CommonJs", function(done) { - var _test_require = require.valueOf(); var _test_exports = exports; var _test_module = module; define(function(require, exports, module) { (typeof require).should.be.eql("function"); - require.valueOf().should.be.equal(_test_require); exports.should.be.equal(_test_exports); module.should.be.equal(_test_module); require("./circular").should.be.eql(1); diff --git a/test/cases/runtime/require-function/index.js b/test/cases/runtime/require-function/index.js index e3fe1ada4..12a202531 100644 --- a/test/cases/runtime/require-function/index.js +++ b/test/cases/runtime/require-function/index.js @@ -1,5 +1,5 @@ it("should have correct properties on the require function", function() { - __webpack_require__.cache.should.have.type("object"); - __webpack_require__.modules.should.have.type("object"); + __webpack_require__.c.should.have.type("object"); + __webpack_require__.m.should.have.type("object"); __webpack_require__.p.should.have.type("string"); }); \ No newline at end of file