UNPKG

webpack

Version:

Packs CommonJs Modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loading of js, json, jade, coffee, css, ... out of the box and more with custom loaders.

162 lines (149 loc) 8.31 kB
// Should not break it... should not include complete directory... require = require("../../../require-polyfill")(require.valueOf()); window.test(true, "index.js should be replaced with index.web.js"); require("script!../js/libary1.js"); window.test(window.libary1, "libary1 loaded"); window.test(window.libary2.ok, "libary2 loaded"); require.ensure("subcontent", function(require) { // Comments work! exports.ok = true; window.test(require("subcontent") === "replaced", "node_modules should be replaced with web_modules"); window.test(require("subcontent2/file.js") === "orginal", "node_modules should still work when web_modules exists"); }); setTimeout(function() { window.test(exports.ok, "asnyc loaded, exports is still avaible"); }, 3000); window.test(require("./circular") === 1, "circular require should work"); window.test(require("./singluar.js").value === 1, "sigular module loaded"); 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 ( "." + "." + "/" + "templ" + "ates" ) ( "./subdir/tmpl.js" ) === "subdir test template", "Context should work with subdirectories and splitted"); var template = "tmpl", templateFull = "./tmpl.js"; window.test(require("../templates/" + template) === "test template", "Automatical context should work"); window.test(require("../templates/templateLoader")(templateFull) === "test template", "Automatical context without prefix should work"); window.test(require("../templates/templateLoaderIndirect")(templateFull) === "test template", "Automatical context should work with require identifier"); window.test(function(require) { return require; }(1234) === 1234, "require overwrite in anonymos function"); function testFunc(abc, require) { return require; } window.test(testFunc(333, 678) === 678, "require overwrite in named function"); function testCase(number) { //window.test(require("./folder/file" + (number === 1 ? 1 : "2")) === "file" + number); window.test(require(number === 1 ? "../folder/file1" : number === 2 ? "../folder/file2" : number === 3 ? "../folder/file3" : "./missingModule") === "file" + number, "?: operator in require do not create context, test "+number); } testCase(1); testCase(2); testCase(3); window.test(require("../folder/typeof") === "function", "typeof require should be function"); var error = null; try { testCase(4); } catch(e) { error = e; } window.test(error instanceof Error, "Missing module should throw Error, indirect"); error = null; try { require("./missingModule2"); } catch(e) { error = e; } window.test(error instanceof Error, "Missing module should throw Error, direct"); 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"); window.test(typeof module.id === "string", "module.id should be a string"); window.test(process.argv && process.argv.length > 1, "process.argv should be an array"); process.nextTick(function() { sum2++; }); process.on("xyz", function() { sum2++; }); process.emit("xyz"); window.test(window === global, "window === global"); (function() { var require = 123; window.test(require === 123, "overwrite require via variable should be ok"); }()); (function() { var module = 1233; window.test(module === 1233, "overwrite module via variable should be ok"); }()); }); require.ensure([], function(require) { require("./acircular"); require("./duplicate"); require("./duplicate2"); }); require.ensure([], function(require) { require("./acircular2"); require("./duplicate"); require("./duplicate2"); }); var sum = 0; require.ensure([], function(require) { require("./duplicate"); require("./duplicate2"); sum++; }); require.ensure([], function(require) { require("./duplicate"); require("./duplicate2"); sum++; }); var sum2 = 0; setTimeout(function() { window.test(sum === 2, "Multiple callbacks on code load finish"); window.test(sum2 === 2, "process.nextTick and process.emit/on should be polyfilled"); }, 3000); // Loader tests window.test(require("testloader!../resources/abc.txt") === "abcwebpack", "Loader in package.json"); window.test(require("testloader/lib/loader!../resources/abc.txt") === "abcwebpack", "Loader with .webpack-loader.js extention"); window.test(require("testloader/lib/loader.web-loader.js!../resources/abc.txt") === "abcweb", "Loader with .web-loader.js extention"); window.test(require("testloader/lib/loader.loader.js!../resources/abc.txt") === "abcloader", "Loader with .loader.js extention"); window.test(require("testloader/lib/loader-indirect!../resources/abc.txt") === "abcwebpack", "Loader with .js extention and requires in loader"); window.test(require("testloader!../loaders/reverseloader!../resources/abc.txt") === "cbawebpack", "Multiple loaders and relative paths"); window.test(require("raw!../resources/abc.txt") === "abc", "Buildin 'raw' loader"); window.test(require("jade!../resources/template.jade")({abc: "abc"}) === "<p>abc</p>", "Buildin 'jade' loader"); window.test(require("../resources/template.jade")({abc: "abc"}) === "<p>abc</p>", "Buildin 'jade' loader, by ext"); window.test(require("json!../../../package.json").name === "webpack", "Buildin 'json' loader"); window.test(require("../../../package.json").name === "webpack", "Buildin 'json' loader, by ext"); window.test(require("coffee!../resources/script.coffee") === "coffee test", "Buildin 'coffee' loader"); window.test(require("../resources/script.coffee") === "coffee test", "Buildin 'coffee' loader, by ext"); window.test(require("css!../css/stylesheet.css").indexOf(".rule-direct") !== -1, "Buildin 'css' loader, direct content"); window.test(require("css!../css/stylesheet.css").indexOf(".rule-import1") !== -1, "Buildin 'css' loader, imported rule"); window.test(require("css!../css/stylesheet.css").indexOf(".rule-import2") !== -1, "Buildin 'css' loader, double imported rule"); window.test(require("css!val!../css/generateCss").indexOf("generated") !== -1, "Buildin 'val' loader, combined with css"); window.test(require("css!val!../css/generateCss").indexOf(".rule-import2") !== -1, "Buildin 'val' loader, combined with css, imported css"); window.test(require("raw!val!../css/generateCss").indexOf("generated") !== -1, "Buildin 'val' loader, combined with raw"); window.test(require("less!../less/stylesheet.less").indexOf(".less-rule-direct") !== -1, "Buildin 'less' loader, direct content"); window.test(require("less!../less/stylesheet.less").indexOf(".less-rule-import1") !== -1, "Buildin 'less' loader, imported rule"); window.test(require("less!../less/stylesheet.less").indexOf(".less-rule-import2") !== -1, "Buildin 'less' loader, double imported rule"); // Buildin 'style' loader adds css to document require("../css/stylesheet.css"); require("../less/stylesheet.less"); // file loader window.test(require("file/png!../img/image.png").indexOf("js/") === 0, "Buildin 'file' loader, png"); setTimeout(function() { document.getElementById("image").src = require("file/png!../img/image.png"); }, 200); // Loader & Context var abc = "abc", scr = "script.coffee"; window.test(require("../resources/" + scr) === "coffee test", "context should process extensions"); window.test(require("raw!../resources/" + abc + ".txt") === "abc", "raw loader with context"); // require behavior var singlarObj = require("./singluar2"); var singlarId = require.resolve("./singluar2"); var singlarIdInConditional = require.resolve(true ? "./singluar2" : "./singluar"); window.test(typeof singlarId == "number", "require.resolve returns a id"); window.test(singlarIdInConditional === singlarId, "require.resolve returns a id if in conditional"); window.test(typeof require.cache[singlarId] == "object", "require.cache can be read"); delete require.cache[singlarId]; window.test(require("./singluar2") !== singlarObj, "require.cache can be deleted"); // Tests from node.js require("bundle!../nodetests");