# example.js ``` javascript function getTemplate(templateName) { return require("./templates/"+templateName); } console.log(getTemplate("a")); console.log(getTemplate("b")); ``` # templates/ * a.js * b.js * c.js All templates are of this pattern: ``` javascript module.exports = function() { return "This text was generated by template X"; } ``` # js/output.js ``` javascript /******/(function(modules) { /******/ var installedModules = {}; /******/ function require(moduleId) { /******/ if(typeof moduleId !== "number") throw new Error("Cannot find module '"+moduleId+"'"); /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ modules[moduleId](module, module.exports, require); /******/ module.loaded = true; /******/ return module.exports; /******/ } /******/ require.e = function(chunkId, callback) { /******/ callback(require); /******/ }; /******/ require.modules = modules; /******/ require.cache = installedModules; /******/ return require(0); /******/}) /******/({c:"", /******/0: function(module, exports, require) { /**! .\example.js !**/ /******/ /* WEBPACK FREE VAR INJECTION */ (function(console) { function getTemplate(templateName) { return require(/*! ./templates */2)("./"+templateName); } console.log(getTemplate("a")); console.log(getTemplate("b")); /******/ /* WEBPACK FREE VAR INJECTION */ }(require(/*! __webpack_console */1))) /******/}, /******/ /******/1: function(module, exports, require) { /**! (webpack)\buildin\__webpack_console.js !**/ var console = (function() { return this["console"] || (this["window"] && this["window"].console) || {} }()); module.exports = console; for(var name in {log:1, info:1, error:1, warn:1, dir:1, trace:1, assert:1}) if(!console[name]) console[name] = function() {}; var times = {}; if(!console.time) console.time = function(label) { times[label] = Date.now(); }; if(!console.timeEnd) console.timeEnd = function() { var duration = Date.now() - times[label]; console.log('%s: %dms', label, duration); }; /******/}, /******/ /******/2: function(module, exports, require) { /**! .\templates !**/ /***/ var map = {"./a.js":3,"./b.js":4,"./c.js":5}; /***/ exports = module.exports = function(name) { /***/ return require(exports.id(name) || name) /***/ }; /***/ exports.id = function(name) { /***/ return map[name] || map[name+".js"]; /***/ }; /***/ exports.keys = function() { /***/ return Object.keys(map); /***/ }; /******/}, /******/ /******/3: function(module, exports, require) { /**! .\templates\a.js !**/ module.exports = function() { return "This text was generated by template A"; } /******/}, /******/ /******/4: function(module, exports, require) { /**! .\templates\b.js !**/ module.exports = function() { return "This text was generated by template B"; } /******/}, /******/ /******/5: function(module, exports, require) { /**! .\templates\c.js !**/ module.exports = function() { return "This text was generated by template C"; } /******/} /******/}) ``` # Info ## Uncompressed ``` Hash: f37d726cac8a8a4caa9c51bfa3479bc0 Compile Time: 31ms Chunks: 1 Modules: 6 Modules including duplicates: 6 Modules first chunk: 6 main output.js: 2772 chars/bytes from output.js 0 157 .\example.js main 1 502 (webpack)\buildin\__webpack_console.js require (2x) from .\example.js 2 322 [context] .\templates context from .\example.js 3 80 .\templates\a.js context from .\example.js 4 80 .\templates\b.js context from .\example.js 5 80 .\templates\c.js context from .\example.js ``` ## Minimized (uglify-js, no zip) ``` Hash: 12af6de63ffb3550246208db321a2c56 Compile Time: 239ms Chunks: 1 Modules: 6 Modules including duplicates: 6 Modules first chunk: 6 main output.js: 1162 chars/bytes from output.js 0 110 .\example.js main 1 403 (webpack)\buildin\__webpack_console.js require (2x) from .\example.js 2 213 [context] .\templates context from .\example.js 3 73 .\templates\a.js context from .\example.js 4 73 .\templates\b.js context from .\example.js 5 73 .\templates\c.js context from .\example.js ``` ## Graph ![webpack-graph](http://webpack.github.com/webpack/examples/require.context/graph.svg) # Code Splitting See [this example combined with code splitting](/sokra/modules-webpack/tree/master/examples/code-splitted-require.context)