Skip to content

Releases: primer/stylelint-config

v9.2.0

01 Oct 21:38
8446994
Compare
Choose a tag to compare

🚀 Enhancements

  • New primer/no-undefined-vars to prohibit usages of undefined CSS variables

v9.1.0

23 Sep 23:53
c2174ec
Compare
Choose a tag to compare

🚀 Enhancements

  • The primer/colors, primer/borders, and primer/box-shadow rules now allow CSS color variables with the correct functional names (e.g. var(--color-text-primary)). #62

v9.0.0 (October 29, 2019)

30 Oct 00:04
6e88bbf
Compare
Choose a tag to compare

💥 Breaking Change

  • primer/variables is no longer supported; please use the primer/colors, primer/borders, primer/box-shadow, primer/spacing, and primer/typography rules instead. #50

🚀 Enhancements

  • The new primer/colors rule enforces color variable usage in color, background-color, and fill properties
  • The new primer/borders rule enforces border variable usage in border CSS props
  • The new primer/box-shadow rule enforces $box-shadow* variables
  • The new primer/spacing rule enforces $spacer-* variables in margin and padding props
  • The new primer/typography rule enforces typography variable use in font-family, line-height, and font-weight props
  • Variable replacements for autofixing are automatically detected in variable data from Primer CSS (see: primer/css#949) #52
  • It is now possible to define variable rules using functions that take the variables, as in:
    module.exports = createVariableRule('primer/whatever', ({variables}) => {
      /* do something with variables here */
    })
  • It's also now possible to provide rule overrides in local stylelint configs as functions:
    module.exports = {
      extends: 'stylelint-config-primer',
      rules: {
        'primer/colors': [true, {
          rules: ({variables, rules}) => {
            /* do something with variables and/or rules here */
            return rules
        }]
      }
    })
  • This release adds support for an optional singular: true flag to rule configs, which skips the parsing of individual values in the matched properties. We use this in primer/box-shadow to prevent multiple warnings for a single value like box-shadow: inset 0 1px $blue (before there would be 4 separate ones!).

🐛 Bug fixes

  • Use requirePrimerFile() when loading dist/variables.json so that we can access the right file when running within the @primer/css repo.
  • Walk only declarations (prop: value) in rules (blocks with selectors, not @rules), and skip linting for declarations nested in @each, @for, @function, and @mixin blocks, since those can define their own variables and we can't reliably assert their values.
  • Allow $*-shadow variable patterns in primer/box-shadow to match $btn-active-shadow and $form-control-shadow
  • Allow color: inherit in primer/colors
  • Allow $em-spacer-* in padding and margin properties
  • Allow (and auto-fix!) negative spacer variables in margin properties
  • Make primer/colors smarter re: background property shorthand values (allowing positions and image url(*) values)
  • Remove 100% from allowed values for border-radius, and suggest 50% instead
  • Prohibit negative spacer values in padding properties
  • Allow $h000-size for marketing

v8.2.1

02 Oct 23:49
0a63123
Compare
Choose a tag to compare

🐛 Bug fix

  • Add globby as a direct dependency. It was masked by npm's hoisting in the last release. ☹️

v8.2.0

02 Oct 23:30
871b0d8
Compare
Choose a tag to compare

🚀 Features

  • The new primer/no-unused-vars rule helps catch unused Sass variables in your project #46
  • The new primer/variables rule helps enforce the use of specific Primer SCSS variables in a variety of known CSS properties, and can fix common problems automatically! #28

📝 Documentation

🏠 Internal

  • Resolve a security vulnerability with npm audit fix

v8.1.0

20 Sep 06:21
a1d7adb
Compare
Choose a tag to compare

🚀 New features

  • The primer/no-override rule now has an ignoreSelectors option, which takes an array of strings and/or regular expressions or a function to ignore (pass) matched selectors.

🐛 Bug fixes

  • primer/no-override now really only counts class selectors as violations!

v8.0.0 (September 9, 2019)

09 Sep 18:48
d6b8c95
Compare
Choose a tag to compare

💥 Breaking changes

  • Remove stylelint-selector-no-utility and all references #41
  • Focus primer/no-overrides solely on class selectors, and improve error messages #37

🏠 Internal

  • Upgrade stylelint-scss to 3.10.0 (closes #34)
  • Migrate to Actions v2 #40
  • npm audit fix to resolve dependency security vulnerabilities

v7.0.1 (June 20, 2019)

20 Jun 16:44
9d25628
Compare
Choose a tag to compare

🐛 This patch release fixes #32 by loosening the peer dependency version specifier for @primer/css so that the config works with any version of Primer CSS after primer/css#666.

📦 We've also upgraded to [email protected] to resolve some dependency vulnerabilities.

v7.0.0

11 Apr 18:41
e16105f
Compare
Choose a tag to compare

💥 Breaking changes

  • The config now uses primer/no-override instead of primer/selector-no-utility. See #25 for more info.
  • @primer/css is now a required peer dependency, because we want this to work with different versions of Primer.

🚀 Features

  • primer/no-override is a new rule that replaces primer/selector-no-utility and makes it possible to configure files or directories with options that allow or prevent overrides of selectors from different Primer CSS "bundles". See #25 for more info.

🏠 Internal

  • There are more extensive tests, additional expect() matchers, and test utilities that make it easy to set rule options in each test.

v6.0.0 (2019-03-18)

18 Mar 19:27
6c7add8
Compare
Choose a tag to compare

TL;DR: this release requires @primer/css as a peer dependency. If you really don't want that, you -should be able to disable primer/selector-no-utility in your config and prevent it from being loaded.

💥 Breaking changes

  • This release includes [email protected], which is a breaking change because it (and now, this module) requires @primer/css as a peer dependency so that we can pull the list of immutable utility classes from the module at runtime rather than building them at publish time.