print origial require string as comment into file

This commit is contained in:
Tobias Koppers 2012-03-12 00:30:54 +01:00
parent c34fcd16db
commit 85afe5214f
7 changed files with 26 additions and 17 deletions

View File

@ -58,7 +58,7 @@ getTemplate("b", function(b) {
function getTemplate(templateName, callback) {
require.ensure(1, function(require) {
callback(require(1)("./"+templateName));
callback(require(/* ../require.context/templates */1)("./"+templateName));
});
}
getTemplate("a", function(a) {
@ -123,7 +123,7 @@ module.exports = function() {
modulesIncludingDuplicates: 5,
modulesPerChunk: 2.5,
modulesFirstChunk: 1,
fileSizes: { 'output.js': 1855, '1.output.js': 729 } }
fileSizes: { 'output.js': 1889, '1.output.js': 729 } }
```
## Minimized (uglify-js, no zip)

View File

@ -52,11 +52,11 @@ require.ensure(["c"], function(require) {
/******/({a:".output.js",b:"webpackJsonp",c:"",
/******/0: function(module, exports, require) {
var a = require(1);
var b = require(2);
var a = require(/* a */1);
var b = require(/* b */4);
require.ensure(1, function(require) {
require(2).xyz();
var d = require(3);
require(/* b */4).xyz();
var d = require(/* d */2);
});
/******/},
@ -67,7 +67,7 @@ require.ensure(1, function(require) {
/******/},
/******/
/******/2: function(module, exports, require) {
/******/4: function(module, exports, require) {
// module b
@ -111,7 +111,7 @@ webpackJsonp(1,{3:function(a,b,c){},4:function(a,b,c){}})
modulesIncludingDuplicates: 5,
modulesPerChunk: 2.5,
modulesFirstChunk: 3,
fileSizes: { 'output.js': 1948, '1.output.js': 200 } }
fileSizes: { 'output.js': 1935, '1.output.js': 200 } }
```
## Minimized (uglify-js, no zip)

View File

@ -45,7 +45,7 @@ module.exports = function() {
/******/0: function(module, exports, require) {
function getTemplate(templateName) {
return require(1)("./"+templateName);
return require(/* ./templates */1)("./"+templateName);
}
console.log(getTemplate("a"));
console.log(getTemplate("b"));
@ -55,7 +55,7 @@ console.log(getTemplate("b"));
/******/1: function(module, exports, require) {
/***/module.exports = function(name) {
/***/ var map = {"./b.js":3,"./a.js":2,"./c.js":4};
/***/ var map = {"./a.js":2,"./b.js":3,"./c.js":4};
/***/ return require(map[name]||map[name+".web.js"]||map[name+".js"]);
/***/};
@ -98,7 +98,7 @@ module.exports = function() {
modulesIncludingDuplicates: 5,
modulesPerChunk: 5,
modulesFirstChunk: 5,
fileSizes: { 'output.js': 1454 } }
fileSizes: { 'output.js': 1471 } }
```
## Minimized (uglify-js, no zip)

View File

@ -159,6 +159,7 @@ function addContextModule(depTree, context, contextModuleName, options, callback
callback(null, depTree.modules[dirname].id);
} else {
var contextModule = depTree.modules[dirname] = {
name: contextModuleName,
id: depTree.nextModuleId++,
requireMap: {},
requires: []

View File

@ -10,20 +10,26 @@ module.exports = function(module) {
var replaces = []; // { from: 123, to: 125, value: "4" }
function genReplaceRequire(requireItem) {
if(requireItem.nameRange && requireItem.id !== undefined) {
var prefix = "";
if(requireItem.name)
prefix += "/* " + requireItem.name + " */";
replaces.push({
from: requireItem.nameRange[0],
to: requireItem.nameRange[1],
value: "" + requireItem.id
value: prefix + requireItem.id
});
}
}
function genContextReplaces(contextItem) {
var postfix = "";
var prefix = "";
if(contextItem.name)
prefix += "/* " + contextItem.name + " */";
if(contextItem.require) {
replaces.push({
from: contextItem.calleeRange[0],
to: contextItem.calleeRange[1],
value: "require(" + ((contextItem.id || "throw new Error('there is not id for this')") + "") + ")"
value: "require(" + prefix + ((contextItem.id || "throw new Error('there is not id for this')") + "") + ")"
});
replaces.push({
from: contextItem.replace[0][0],
@ -34,7 +40,7 @@ module.exports = function(module) {
replaces.push({
from: contextItem.expressionRange[0],
to: contextItem.expressionRange[1],
value: "require(" + ((contextItem.id || "throw new Error('there is not id for this')") + "") + ")" + postfix
value: "require(" + prefix + ((contextItem.id || "throw new Error('there is not id for this')") + "") + ")" + postfix
});
}
}

View File

@ -1,6 +1,6 @@
{
"name": "webpack",
"version": "0.1.4",
"version": "0.1.5",
"author": "Tobias Koppers @sokra",
"description": "Packs CommonJs Modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand.",
"dependencies": {

View File

@ -13,17 +13,19 @@ setTimeout(function() {
window.test(require("./circular") === 1, "circular require should work");
window.test(require("./singluar.js").value === 1, "sigular module loaded");
require("./singluar.js").value = 2;
require("./sing" + "luar.js").value = 2;
window.test(require("./singluar").value === 2, "exported object is singluar");
window.test(require("subfilemodule") === "subfilemodule", "Modules as single file should load");
window.test(require.context("../templates")("./tmpl") === "test template", "Context should work");
window.test(require.context("../templates")("./subdir/tmpl.js") === "subdir test template", "Context should work with subdirectories");
window.test(require . context ( "." + "." + "/" + "templ" + "ates" ) ( "./subdir/tmpl.js" ) === "subdir test template", "Context should work with subdirectories and splitted");
var template = "tmpl";
window.test(require("../templates/" + template) === "test template", "Automatical context should work");
require.ensure([], function(require) {
var contextRequire = require.context(".");
window.test(contextRequire("./singluar").value === 2, "Context works in chunk");
var singl = "singl";
window.test(require("." + "/" + singl + "uar").value === 2, "Context works in chunk, when splitted");
});
require.ensure([], function(require) {