stylelint-scss
Advanced tools
Comparing version 1.0.0 to 1.1.0
@@ -1,3 +0,10 @@ | ||
# Head | ||
# 1.1.0 | ||
- Added: `at-mixin-no-argumentless-call-parentheses` rule. | ||
- Added: `at-import-no-partial-leading-underscore` rule. | ||
- Added: `at-import-no-partial-extension` rule. | ||
- Added: `percent-placeholder-pattern` rule. | ||
- Fixed: `selector-no-redundant-nesting-selector` no longer warns about BEM syntax. | ||
- Fixed: bug causing rules to ignore severity levels `warning` / `error` and report `ignore` instead. | ||
# 1.0.0 | ||
@@ -4,0 +11,0 @@ |
@@ -9,2 +9,4 @@ "use strict"; | ||
var _utils = require("./utils"); | ||
var _rules = require("./rules"); | ||
@@ -16,8 +18,6 @@ | ||
var namespace = "scss"; | ||
var rulesPlugins = Object.keys(_rules2.default).map(function (ruleName) { | ||
return (0, _stylelint.createPlugin)(namespace + "/" + ruleName, _rules2.default[ruleName]); | ||
return (0, _stylelint.createPlugin)((0, _utils.namespace)(ruleName), _rules2.default[ruleName]); | ||
}); | ||
exports.default = rulesPlugins; |
@@ -33,6 +33,8 @@ "use strict"; | ||
var ruleName = exports.ruleName = "at-extend-no-missing-placeholder"; | ||
var _utils = require("../../utils"); | ||
var ruleName = exports.ruleName = (0, _utils.namespace)("at-extend-no-missing-placeholder"); | ||
var messages = exports.messages = _stylelint.utils.ruleMessages(ruleName, { | ||
rejected: "Expected a placeholder selector (e.g. %placeholder) to be used in @extend" | ||
}); |
@@ -45,6 +45,8 @@ "use strict"; | ||
var ruleName = exports.ruleName = "at-function-pattern"; | ||
var _utils = require("../../utils"); | ||
var ruleName = exports.ruleName = (0, _utils.namespace)("at-function-pattern"); | ||
var messages = exports.messages = _stylelint.utils.ruleMessages(ruleName, { | ||
expected: "Expected @function name to match specified pattern" | ||
}); |
@@ -45,6 +45,8 @@ "use strict"; | ||
var ruleName = exports.ruleName = "at-mixin-pattern"; | ||
var _utils = require("../../utils"); | ||
var ruleName = exports.ruleName = (0, _utils.namespace)("at-mixin-pattern"); | ||
var messages = exports.messages = _stylelint.utils.ruleMessages(ruleName, { | ||
expected: "Expected @mixin name to match specified pattern" | ||
}); |
@@ -95,2 +95,4 @@ "use strict"; | ||
var _utils = require("../../utils"); | ||
var _postcssValueParser = require("postcss-value-parser"); | ||
@@ -102,3 +104,3 @@ | ||
var ruleName = exports.ruleName = "dollar-variable-no-missing-interpolation"; | ||
var ruleName = exports.ruleName = (0, _utils.namespace)("dollar-variable-no-missing-interpolation"); | ||
@@ -105,0 +107,0 @@ var messages = exports.messages = _stylelint.utils.ruleMessages(ruleName, { |
@@ -44,6 +44,8 @@ "use strict"; | ||
var ruleName = exports.ruleName = "dollar-variable-pattern"; | ||
var _utils = require("../../utils"); | ||
var ruleName = exports.ruleName = (0, _utils.namespace)("dollar-variable-pattern"); | ||
var messages = exports.messages = _stylelint.utils.ruleMessages(ruleName, { | ||
expected: "Expected $ variable name to match specified pattern" | ||
}); |
@@ -15,2 +15,14 @@ "use strict"; | ||
var _atImportNoPartialExtension = require("./at-import-no-partial-extension"); | ||
var _atImportNoPartialExtension2 = _interopRequireDefault(_atImportNoPartialExtension); | ||
var _atImportNoPartialLeadingUnderscore = require("./at-import-no-partial-leading-underscore"); | ||
var _atImportNoPartialLeadingUnderscore2 = _interopRequireDefault(_atImportNoPartialLeadingUnderscore); | ||
var _atMixinNoArgumentlessCallParentheses = require("./at-mixin-no-argumentless-call-parentheses"); | ||
var _atMixinNoArgumentlessCallParentheses2 = _interopRequireDefault(_atMixinNoArgumentlessCallParentheses); | ||
var _atMixinPattern = require("./at-mixin-pattern"); | ||
@@ -28,2 +40,6 @@ | ||
var _percentPlaceholderPattern = require("./percent-placeholder-pattern"); | ||
var _percentPlaceholderPattern2 = _interopRequireDefault(_percentPlaceholderPattern); | ||
var _selectorNoRedundantNestingSelector = require("./selector-no-redundant-nesting-selector"); | ||
@@ -38,6 +54,10 @@ | ||
"at-function-pattern": _atFunctionPattern2.default, | ||
"at-import-no-partial-extension": _atImportNoPartialExtension2.default, | ||
"at-import-no-partial-leading-underscore": _atImportNoPartialLeadingUnderscore2.default, | ||
"at-mixin-no-argumentless-call-parentheses": _atMixinNoArgumentlessCallParentheses2.default, | ||
"at-mixin-pattern": _atMixinPattern2.default, | ||
"dollar-variable-no-missing-interpolation": _dollarVariableNoMissingInterpolation2.default, | ||
"dollar-variable-pattern": _dollarVariablePattern2.default, | ||
"percent-placeholder-pattern": _percentPlaceholderPattern2.default, | ||
"selector-no-redundant-nesting-selector": _selectorNoRedundantNestingSelector2.default | ||
}; |
@@ -15,6 +15,9 @@ "use strict"; | ||
root.walkRules(function (rule) { | ||
var unnecessaryAmpersandRegex = /^&(\s+)?>?(\s+)?(\w+|\s\.)/; | ||
root.walkRules(/&/, function (rule) { | ||
var selector = rule.selector; | ||
if (rule.selector.trim() === "&" || unnecessaryAmpersandRegex.test(rule.selector.trim())) { | ||
var combinatorRegex = /^&\s*(>|\+|~)\s*\.*[a-zA-Z]+/; | ||
var classOrElementRegex = /^&\s+\.*[a-zA-Z]+/; | ||
if (selector === "&" || classOrElementRegex.test(selector) || combinatorRegex.test(selector)) { | ||
_stylelint.utils.report({ | ||
@@ -33,6 +36,8 @@ ruleName: ruleName, | ||
var ruleName = exports.ruleName = "selector-no-redundant-nesting-selector"; | ||
var _utils = require("../../utils"); | ||
var ruleName = exports.ruleName = (0, _utils.namespace)("selector-no-redundant-nesting-selector"); | ||
var messages = exports.messages = _stylelint.utils.ruleMessages(ruleName, { | ||
rejected: "Unnecessary nesting selector (&)" | ||
}); |
{ | ||
"name": "stylelint-scss", | ||
"description": "A collection of SCSS specific rules for stylelint", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"author": "Krister Kari", | ||
@@ -16,4 +16,6 @@ "babel": { | ||
"lodash": "^4.11.1", | ||
"postcss-resolve-nested-selector": "^0.1.1", | ||
"postcss-selector-parser": "^2.0.0", | ||
"postcss-value-parser": "^3.3.0", | ||
"stylelint": "^6.3.0" | ||
"stylelint": "6.3.3" | ||
}, | ||
@@ -28,4 +30,7 @@ "devDependencies": { | ||
"postcss-scss": "^0.1.7", | ||
"replace": "^0.3.0", | ||
"request": "^2.72.0", | ||
"rimraf": "^2.5.2", | ||
"stylelint-rule-tester": "^0.6.2", | ||
"semver": "^5.1.0", | ||
"stylelint-test-rule-tape": "^0.2.0", | ||
"tape": "^4.5.1" | ||
@@ -54,3 +59,4 @@ }, | ||
"linter", | ||
"stylelint" | ||
"stylelint", | ||
"stylelint-plugin" | ||
], | ||
@@ -64,2 +70,3 @@ "license": "MIT", | ||
"scripts": { | ||
"milestone": "node scripts/update-milestone.js", | ||
"prebuild": "rimraf dist", | ||
@@ -66,0 +73,0 @@ "build": "babel src --out-dir dist", |
import { createPlugin } from "stylelint" | ||
import { namespace } from "./utils" | ||
import rules from "./rules" | ||
const namespace = "scss" | ||
const rulesPlugins = Object.keys(rules).map(ruleName => { | ||
return createPlugin(`${namespace}/${ruleName}`, rules[ruleName]) | ||
return createPlugin(namespace(ruleName), rules[ruleName]) | ||
}) | ||
export default rulesPlugins |
import { utils } from "stylelint" | ||
import { namespace } from "../../utils" | ||
export const ruleName = "at-extend-no-missing-placeholder" | ||
export const ruleName = namespace("at-extend-no-missing-placeholder") | ||
@@ -5,0 +6,0 @@ export const messages = utils.ruleMessages(ruleName, { |
import { isRegExp, isString } from "lodash" | ||
import { utils } from "stylelint" | ||
import { namespace } from "../../utils" | ||
export const ruleName = "at-function-pattern" | ||
export const ruleName = namespace("at-function-pattern") | ||
@@ -6,0 +7,0 @@ export const messages = utils.ruleMessages(ruleName, { |
import { isRegExp, isString } from "lodash" | ||
import { utils } from "stylelint" | ||
import { namespace } from "../../utils" | ||
export const ruleName = "at-mixin-pattern" | ||
export const ruleName = namespace("at-mixin-pattern") | ||
@@ -6,0 +7,0 @@ export const messages = utils.ruleMessages(ruleName, { |
import { utils } from "stylelint" | ||
import { namespace } from "../../utils" | ||
import valueParser from "postcss-value-parser" | ||
export const ruleName = "dollar-variable-no-missing-interpolation" | ||
export const ruleName = namespace("dollar-variable-no-missing-interpolation") | ||
@@ -6,0 +7,0 @@ export const messages = utils.ruleMessages(ruleName, { |
import { isRegExp, isString } from "lodash" | ||
import { utils } from "stylelint" | ||
import { namespace } from "../../utils" | ||
export const ruleName = "dollar-variable-pattern" | ||
export const ruleName = namespace("dollar-variable-pattern") | ||
@@ -6,0 +7,0 @@ export const messages = utils.ruleMessages(ruleName, { |
import atExtendNoMissingPlaceholder from "./at-extend-no-missing-placeholder" | ||
import atFunctionPattern from "./at-function-pattern" | ||
import atImportNoPartialExtension from "./at-import-no-partial-extension" | ||
import atImportNoPartialLeadingUnderscore from "./at-import-no-partial-leading-underscore" | ||
import atMixinNoArgumentlessCallParentheses from "./at-mixin-no-argumentless-call-parentheses" | ||
import atMixinPattern from "./at-mixin-pattern" | ||
import dollarVariableNoMissingInterpolation from "./dollar-variable-no-missing-interpolation" | ||
import dollarVariablePattern from "./dollar-variable-pattern" | ||
import percentPlaceholderPattern from "./percent-placeholder-pattern" | ||
import selectorNoRedundantNestingSelector from "./selector-no-redundant-nesting-selector" | ||
@@ -11,6 +15,10 @@ | ||
"at-function-pattern": atFunctionPattern, | ||
"at-import-no-partial-extension": atImportNoPartialExtension, | ||
"at-import-no-partial-leading-underscore": atImportNoPartialLeadingUnderscore, | ||
"at-mixin-no-argumentless-call-parentheses": atMixinNoArgumentlessCallParentheses, | ||
"at-mixin-pattern": atMixinPattern, | ||
"dollar-variable-no-missing-interpolation": dollarVariableNoMissingInterpolation, | ||
"dollar-variable-pattern": dollarVariablePattern, | ||
"percent-placeholder-pattern": percentPlaceholderPattern, | ||
"selector-no-redundant-nesting-selector": selectorNoRedundantNestingSelector, | ||
} |
import { utils } from "stylelint" | ||
import { namespace } from "../../utils" | ||
export const ruleName = "selector-no-redundant-nesting-selector" | ||
export const ruleName = namespace("selector-no-redundant-nesting-selector") | ||
@@ -14,6 +15,8 @@ export const messages = utils.ruleMessages(ruleName, { | ||
root.walkRules(rule => { | ||
const unnecessaryAmpersandRegex = /^&(\s+)?>?(\s+)?(\w+|\s\.)/ | ||
root.walkRules(/&/, rule => { | ||
const { selector } = rule | ||
const combinatorRegex = /^&\s*(>|\+|~)\s*\.*[a-zA-Z]+/ | ||
const classOrElementRegex = /^&\s+\.*[a-zA-Z]+/ | ||
if (rule.selector.trim() === "&" || unnecessaryAmpersandRegex.test(rule.selector.trim())) { | ||
if (selector === "&" || classOrElementRegex.test(selector) || combinatorRegex.test(selector)) { | ||
utils.report({ | ||
@@ -20,0 +23,0 @@ ruleName, |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
56395
49
1190
0
5
13
+ Addedglob@6.0.4(transitive)
+ Addedglobby@4.1.0(transitive)
+ Addedpostcss-less@0.10.0(transitive)
+ Addedspecificity@0.1.6(transitive)
+ Addedstylelint@6.3.3(transitive)
- Removedfs.realpath@1.0.0(transitive)
- Removedglob@7.2.3(transitive)
- Removedglobby@5.0.0(transitive)
- Removedhtml-tags@1.2.0(transitive)
- Removedpostcss-less@0.14.0(transitive)
- Removedspecificity@0.2.1(transitive)
- Removedstylelint@6.9.0(transitive)
- Removedsvg-tags@1.0.0(transitive)
Updatedstylelint@6.3.3