mirror of https://github.com/webpack/webpack.git
				
				
				
			
		
			
				
	
	
		
			104 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| import fs from "fs/promises";
 | |
| 
 | |
| const avgCode = `
 | |
| const str = "we" + "do" + "some" + "ops";
 | |
| for(const x of str.split("")) {
 | |
| 	if(x.charCodeAt(0) > 40) {
 | |
| 		console.log("omg");
 | |
| 	} else {
 | |
| 		console.log(Math.random() * 2 + 3 * 2);
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Some comment
 | |
| const value = 9;
 | |
| 
 | |
| switch(value) {
 | |
| 	case true:
 | |
| 		break;
 | |
| 	case "magic":
 | |
| 		throw new Error("Error!");
 | |
| 	case 9:
 | |
| 		(function() {
 | |
| 			// extra scope
 | |
| 			var x = 123;
 | |
| 			var y = 456;
 | |
| 			var z = x + z * x / y;
 | |
| 			x && y && (z = x ? y : x);
 | |
| 		}())
 | |
| }
 | |
| 
 | |
| function a() {}
 | |
| function b() {}
 | |
| function c() {}
 | |
| function d() {}
 | |
| function e() {}
 | |
| function f() {}
 | |
| `;
 | |
| 
 | |
| async function createTree(
 | |
| 	folder,
 | |
| 	useRequire = false,
 | |
| 	count = 50,
 | |
| 	async = undefined
 | |
| ) {
 | |
| 	await fs.mkdir(folder, { recursive: true });
 | |
| 
 | |
| 	let remaining = count - 1;
 | |
| 
 | |
| 	async function make(prefix, count, depth) {
 | |
| 		if (count === 0) {
 | |
| 			await fs.writeFile(
 | |
| 				`${folder}/${prefix}.js`,
 | |
| 				useRequire
 | |
| 					? `module.exports = 1;\n${avgCode}`
 | |
| 					: `export default 1;\n${avgCode}`
 | |
| 			);
 | |
| 		} else {
 | |
| 			const list = [];
 | |
| 
 | |
| 			for (let i = 0; i < count; i++) {
 | |
| 				if (remaining-- <= 0) break;
 | |
| 				const isAsync =
 | |
| 					typeof async !== "undefined"
 | |
| 						? depth >= async
 | |
| 						: depth <= 4 && i >= 3 && i <= 4;
 | |
| 				const module = `${prefix}-${i}`;
 | |
| 
 | |
| 				if (isAsync) {
 | |
| 					list.push(
 | |
| 						useRequire
 | |
| 							? `require.ensure([], function() { const module${i} = require(${JSON.stringify(`./${module}.js`)}); });\n`
 | |
| 							: `const module${i} = await import(${JSON.stringify(`./${module}.js`)});\n`
 | |
| 					);
 | |
| 					list.push(`counter += module${i};\nconsole.log(counter)`);
 | |
| 				} else {
 | |
| 					list.push(
 | |
| 						useRequire
 | |
| 							? `const module${i} = require(${JSON.stringify(`./${module}.js`)});\n`
 | |
| 							: `import module${i} from ${JSON.stringify(`./${module}.js`)};\n`
 | |
| 					);
 | |
| 					list.push(`counter += module${i};\nconsole.log(counter)`);
 | |
| 				}
 | |
| 
 | |
| 				await make(
 | |
| 					module,
 | |
| 					depth > 4 || count > 30 ? 0 : count + depth + i ** 2,
 | |
| 					depth + 1
 | |
| 				);
 | |
| 			}
 | |
| 
 | |
| 			await fs.writeFile(
 | |
| 				`${folder}/${prefix}.js`,
 | |
| 				`let counter = 0;\n${list.join(
 | |
| 					"\n"
 | |
| 				)};\n${useRequire ? `module.exports = counter;\n${avgCode}` : `export default counter;\n${avgCode}`}`
 | |
| 			);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	await make("module", 2, 0);
 | |
| }
 | |
| 
 | |
| export default createTree;
 |