mirror of https://github.com/webpack/webpack.git
				
				
				
			
		
			
				
	
	
		
			91 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| /*
 | |
| 	MIT License http://www.opensource.org/licenses/mit-license.php
 | |
| 	Author Tobias Koppers @sokra
 | |
| */
 | |
| var webpack = require("./lib/webpack");
 | |
| var path = require("path");
 | |
| 
 | |
| var TIMES = 5;
 | |
| 
 | |
| /* TESTS */
 | |
| 
 | |
| var root = path.join(__dirname, "test", "browsertest");
 | |
| 
 | |
| var testCases = {
 | |
| 	"javascript          ": path.join(root, "lib", "a.js"),
 | |
| 	"javascript with deps": path.join(root, "lib", "b.js"),
 | |
| 	"css                 ": path.join(root, "node_modules", "resources-module", "stylesheet-import2.css"),
 | |
| 	"less                ": path.join(root, "node_modules", "resources-module", "import2.less"),
 | |
| 	"jade                ": path.join(root, "resources", "template.jade"),
 | |
| 	"json                ": path.join(__dirname, "package.json"),
 | |
| 	"coffee              ": path.join(root, "resources", "script.coffee"),
 | |
| 	"file                ": path.join(__dirname, "node_modules", "file-loader", "png.js") + "!" + path.join(root, "img", "image.png"),
 | |
| 	"raw                 ": path.join(__dirname, "node_modules", "raw-loader") + "!" + path.join(root, "resources", "abc.txt"),
 | |
| 	"mixed               ": path.join(root, "lib", "index.web.js"),
 | |
| }
 | |
| 
 | |
| var TESTS = {}
 | |
| 
 | |
| Object.keys(testCases).forEach(function(name) {
 | |
| 	TESTS[name + "                     "] = runWebpack.bind(null, name, testCases[name], false, false, false);
 | |
| 	TESTS[name + " single              "] = runWebpack.bind(null, name, testCases[name], true,  false, false);
 | |
| 	TESTS[name + "        debug        "] = runWebpack.bind(null, name, testCases[name], false, true,  false);
 | |
| 	TESTS[name + " single debug        "] = runWebpack.bind(null, name, testCases[name], true,  true,  false);
 | |
| 	TESTS[name + "        min          "] = runWebpack.bind(null, name, testCases[name], false, false, true );
 | |
| 	TESTS[name + " single min          "] = runWebpack.bind(null, name, testCases[name], true,  false, true );
 | |
| });
 | |
| 
 | |
| function runWebpack(name, file, single, debug, min, cb) {
 | |
| 	webpack({
 | |
| 		entry: file,
 | |
| 		output: {
 | |
| 			path: path.join(root, "js", "bm"),
 | |
| 			filename: name.trim() + ".js"
 | |
| 		},
 | |
| 		optimize: {
 | |
| 			maxChunks: single ? 1 : undefined,
 | |
| 			minimize: min,
 | |
| 		},
 | |
| 		debug: debug
 | |
| 	}, cb);
 | |
| }
 | |
| 
 | |
| /* MAIN */
 | |
| 
 | |
| asyncForEach(Object.keys(TESTS), function(name, done) {
 | |
| 	var test = TESTS[name];
 | |
| 	test(function() {
 | |
| 		var startTime = new Date();
 | |
| 		asyncTimes(test, TIMES, function(err) {
 | |
| 			if(err) throw err;
 | |
| 			var endTime = new Date();
 | |
| 			var time = (endTime - startTime) / TIMES;
 | |
| 			console.log(name + "\t" + time + "ms");
 | |
| 			done();
 | |
| 		});
 | |
| 	});
 | |
| }, function() {
 | |
| });
 | |
| 
 | |
| /* HELPERS */
 | |
| 
 | |
| function asyncForEach(items, fn, cb) {
 | |
| 	var i = -1;
 | |
| 	(function run() {
 | |
| 		i++;
 | |
| 		if(i < items.length) {
 | |
| 			fn(items[i], run);
 | |
| 		} else {
 | |
| 			cb();
 | |
| 		}
 | |
| 	}());
 | |
| }
 | |
| 
 | |
| function asyncTimes(fn, count, cb) {
 | |
| 	(function run(err) {
 | |
| 		if(err) return cb(err);
 | |
| 		if(count-- == 0) return cb();
 | |
| 		fn(run);
 | |
| 	}())
 | |
| }
 |