aboutsummaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/WarnCaseSensitiveModulesPlugin.js
blob: 54edb4ac76d1f40d9450ac3475b95aceb68f3b70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*
	MIT License http://www.opensource.org/licenses/mit-license.php
	Author Tobias Koppers @sokra
*/
"use strict";

const CaseSensitiveModulesWarning = require("./CaseSensitiveModulesWarning");

class WarnCaseSensitiveModulesPlugin {
	apply(compiler) {
		compiler.plugin("compilation", compilation => {
			compilation.plugin("seal", () => {
				const moduleWithoutCase = Object.create(null);
				compilation.modules.forEach(module => {
					const identifier = module.identifier().toLowerCase();
					if(moduleWithoutCase[identifier]) {
						moduleWithoutCase[identifier].push(module);
					} else {
						moduleWithoutCase[identifier] = [module];
					}
				});
				Object.keys(moduleWithoutCase).forEach(key => {
					if(moduleWithoutCase[key].length > 1)
						compilation.warnings.push(new CaseSensitiveModulesWarning(moduleWithoutCase[key]));
				});
			});
		});
	}
}

module.exports = WarnCaseSensitiveModulesPlugin;