|
@@ -752,36 +752,53 @@ var policies = {
|
|
"cssOldPropertyPrefixes": {
|
|
"cssOldPropertyPrefixes": {
|
|
"tool": "phantomas",
|
|
"tool": "phantomas",
|
|
"label": "Old prefixes",
|
|
"label": "Old prefixes",
|
|
- "message": "<p>Many property prefixes such as -moz- or -webkit- are not needed anymore, or by very few people. You can remove them or replace them with the non-prefixed version. This will help reducing your stylesheets weight.</p>",
|
|
|
|
|
|
+ "message": "<p>Many property prefixes such as -moz- or -webkit- are not needed anymore, or by very few people. Sometimes, they have never even existed. You can remove them or replace them with the non-prefixed version. This will help reducing your stylesheets weight.</p><p>The prefixes database comes from <a href=\"http://caniuse.com/\" target=\"_blank\">Can I Use</a>.</p>",
|
|
"isOkThreshold": 0,
|
|
"isOkThreshold": 0,
|
|
"isBadThreshold": 75,
|
|
"isBadThreshold": 75,
|
|
"isAbnormalThreshold": 300,
|
|
"isAbnormalThreshold": 300,
|
|
"hasOffenders": true,
|
|
"hasOffenders": true,
|
|
"offendersTransformFn": function(offenders) {
|
|
"offendersTransformFn": function(offenders) {
|
|
- return {
|
|
|
|
- count: offenders.length,
|
|
|
|
- list: offenders.map(function(offender) {
|
|
|
|
- var splittedOffender = offendersHelpers.cssOffenderPattern(offender);
|
|
|
|
|
|
+ var properties = {};
|
|
|
|
+ offenders.forEach(function(offender) {
|
|
|
|
+ var splittedOffender = offendersHelpers.cssOffenderPattern(offender);
|
|
|
|
|
|
- var parts = /^([^{]*)(?: ?{ ?([^ ]+): (.*) ?}) \/\/ (.*)$/.exec(splittedOffender.css);
|
|
|
|
-
|
|
|
|
- if (!parts) {
|
|
|
|
- debug('cssOldPropertyPrefixes offenders transform function error with "%s"', offender);
|
|
|
|
- return {
|
|
|
|
- parseError: offender
|
|
|
|
- };
|
|
|
|
- }
|
|
|
|
|
|
+ var parts = /^([^{]*)(?: ?{ ?([^ ]+): (.*) ?}) \/\/ (.*)$/.exec(splittedOffender.css);
|
|
|
|
|
|
|
|
+ if (!parts) {
|
|
|
|
+ debug('cssOldPropertyPrefixes offenders transform function error with "%s"', offender);
|
|
return {
|
|
return {
|
|
- rule: parts[1],
|
|
|
|
- property: parts[2],
|
|
|
|
- value: parts[3],
|
|
|
|
|
|
+ parseError: offender
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var propertyName = parts[2];
|
|
|
|
+
|
|
|
|
+ if (!properties[propertyName]) {
|
|
|
|
+ properties[propertyName] = {
|
|
|
|
+ property: propertyName,
|
|
message: parts[4],
|
|
message: parts[4],
|
|
- file: splittedOffender.file,
|
|
|
|
- line: splittedOffender.line,
|
|
|
|
- column: splittedOffender.column
|
|
|
|
|
|
+ rules: []
|
|
};
|
|
};
|
|
- })
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ properties[propertyName].rules.push({
|
|
|
|
+ rule: parts[1],
|
|
|
|
+ value: parts[3],
|
|
|
|
+ file: splittedOffender.file,
|
|
|
|
+ line: splittedOffender.line,
|
|
|
|
+ column: splittedOffender.column
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ // Object to array
|
|
|
|
+ var list = [];
|
|
|
|
+ for (var propertyName in properties) {
|
|
|
|
+ list.push(properties[propertyName]);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return {
|
|
|
|
+ count: offenders.length,
|
|
|
|
+ list: list
|
|
};
|
|
};
|
|
}
|
|
}
|
|
},
|
|
},
|