1
1
mirror of https://github.com/primer/css.git synced 2024-12-29 17:12:27 +03:00

Merge branch 'export-primer-css' of ../stylelint-config-primer into import-stylelint

This commit is contained in:
Shawn Allen 2017-10-09 11:50:24 -07:00
commit f88666d676
11 changed files with 13161 additions and 0 deletions

View File

@ -0,0 +1,13 @@
{
"plugins": [
"eslint-plugin-github"
],
"env": {
"es6": true,
"node": true
},
"extends": [
"plugin:github/recommended",
"plugin:github/es6"
]
}

View File

@ -0,0 +1,2 @@
node_modules
npm-debug.log

View File

@ -0,0 +1,3 @@
tests
*.yml
.github

View File

@ -0,0 +1,12 @@
language: node_js
node_js:
- '5'
deploy:
provider: npm
email: ${NPM_EMAIL}
api_key: ${NPM_API_KEY}
skip_cleanup: true
on:
branch: master
repo: ${TRAVIS_REPO_SLUG}

View File

@ -0,0 +1,33 @@
# HEAD
# 2.0.0
:boom: **The following updates are breaking changes**, since code that disables the deprecated rule will now produce linting errors. Please update your `stylelint-disable` statements accordingly.
- Replaced `selector-no-id: true` with `selector-max-id: 0`
- Replaced `selector-no-type: true` with `selector-max-type: 0`
The rest of the changes should not introduce new linting errors:
- Updated: moved [browserslist](https://github.com/ai/browserslist) spec to `package.json`
- Updated: using the [`no-unsupported-browser-features` plugin](https://github.com/ismay/stylelint-no-unsupported-browser-features) instead of the deprecated `no-unsupported-browser-features` rule
- Removed: `media-feature-no-missing-punctuation`
- Updated: replaced `rule-nested-empty-line-before` and `rule-non-nested-empty-line-before` with `rule-empty-line-before`
# 1.4.0
- Updated: Development dependencies are any version `*`
- Removed: `selector-class-pattern` from config. https://github.com/primer/stylelint-config-primer/pull/11
# 1.3.0
- Added: `length-zero-no-unit` to disallow zero values with units eg `0px`
# 1.2.0
- Removed: We don't need `scss/at-extend-no-missing-placeholder` anymore taken care of by `at-rule-blacklist`
- Added: Adding `selector-no-type` to the rules
# 1.0.0
- Creating a sharable config object

View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2016 GitHub Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,205 @@
# Primer Stylelint Config
[![NPM version](http://img.shields.io/npm/v/stylelint-config-primer.svg)](https://www.npmjs.org/package/stylelint-config-primer)
[![Build Status](https://travis-ci.org/primer/stylelint-config-primer.svg?branch=master)](https://travis-ci.org/primer/stylelint-config-primer)
> A sharable stylelint config object that enforces GitHub's css rules
## Install
```
$ npm install --save stylelint-config-primer
```
## Usage
Within your [stylelint config object](http://stylelint.io/user-guide/configuration/#extends) You can extend this configuration. This will serve as a base for your config, then you can make overrides in your own config object.
```json
{
"extends": "stylelint-config-primer"
}
```
## Documentation
### Plugins
* [stylelint-scss](https://github.com/kristerkari/stylelint-scss): A collection of SCSS specific linting rules for stylelint
* [scss/selector-no-redundant-nesting-selector](https://github.com/kristerkari/stylelint-scss/blob/master/src/rules/selector-no-redundant-nesting-selector/README.md): Disallow redundant nesting selectors (`&`).
* [stylelint-selector-no-utility](https://github.com/primer/stylelint-selector-no-utility): Stylelint rule that doesn't allow the styling of utility classes in CSS
### Configured lints
This is a list of the lints turned on in this configuration, and what they do.
#### At-rule
* [at-rule-blacklist](http://stylelint.io/user-guide/rules/at-rule-blacklist/): Specify a blacklist of disallowed at-rules.
* `"extend"` Disallow the use of `@extend`.
* [at-rule-name-case](http://stylelint.io/user-guide/rules/at-rule-name-case/): at rules must be in written lowercase.
* [at-rule-name-space-after](http://stylelint.io/user-guide/rules/at-rule-name-space-after/): There must always be a single space after at-rule names in single-line declaration blocks.
* [at-rule-semicolon-newline-after](http://stylelint.io/user-guide/rules/at-rule-semicolon-newline-after/): There must always be a newline after the semicolon.
#### Block
* [block-closing-brace-newline-after](http://stylelint.io/user-guide/rules/block-closing-brace-newline-after/): There must always be a newline after the closing brace.
* [block-closing-brace-newline-before](http://stylelint.io/user-guide/rules/block-closing-brace-newline-before/): There must always be a newline before the closing brace in multi-line blocks.
* [block-closing-brace-space-before](http://stylelint.io/user-guide/rules/block-closing-brace-space-before/): There must always be a single space before the closing brace in single-line blocks.
* [block-no-empty](http://stylelint.io/user-guide/rules/block-no-empty/): Disallow empty blocks.
* [block-opening-brace-newline-after](http://stylelint.io/user-guide/rules/block-opening-brace-newline-after/): There must always be a newline after the opening brace in multi-line blocks.
* [block-opening-brace-space-after](http://stylelint.io/user-guide/rules/block-opening-brace-space-after/): There must always be a single space after the opening brace in single-line blocks.
* [block-opening-brace-space-before](http://stylelint.io/user-guide/rules/block-opening-brace-space-before/): There must always be a single space before the opening brace.
#### Color
* [color-hex-case](http://stylelint.io/user-guide/rules/color-hex-case/): Hex colors must be written in lowercase.
* [color-hex-length](http://stylelint.io/user-guide/rules/color-hex-length/): Always use short hex notation, where available.
* [color-named](http://stylelint.io/user-guide/rules/color-named/): Colors must never be named.
* [color-no-invalid-hex](http://stylelint.io/user-guide/rules/color-no-invalid-hex/): Hex values must be valid.
#### Comment
* [comment-empty-line-before](http://stylelint.io/user-guide/rules/comment-empty-line-before/): There must always be an empty line before comments. _Except_: Comments that are nested and the first child of their parent node. _Ignore_: stylelint commands
* [comment-whitespace-inside](http://stylelint.io/user-guide/rules/comment-whitespace-inside/): There must always be whitespace inside the markers.
#### Declaration
* [declaration-bang-space-after](http://stylelint.io/user-guide/rules/declaration-bang-space-after/): There must never be whitespace after the bang.
* [declaration-bang-space-before](http://stylelint.io/user-guide/rules/declaration-bang-space-before/): There must always be a single space before the bang.
* [declaration-colon-newline-after](http://stylelint.io/user-guide/rules/declaration-colon-newline-after/): There must always be a newline after the colon if the declaration's value is multi-line.
* [declaration-colon-space-after](http://stylelint.io/user-guide/rules/declaration-colon-space-after/): There must always be a single space after the colon if the declaration's value is single-line.
* [declaration-colon-space-before](http://stylelint.io/user-guide/rules/declaration-colon-space-before/): There must never be whitespace before the colon.
#### Declaration block
* [declaration-block-no-duplicate-properties](http://stylelint.io/user-guide/rules/declaration-block-no-duplicate-properties/): Disallow duplicate properties within declaration blocks. _Ignore_: consecutive duplicated properties.
* [declaration-block-no-shorthand-property-overrides](http://stylelint.io/user-guide/rules/declaration-block-no-shorthand-property-overrides/): Disallow shorthand properties that override related longhand properties.
* [declaration-block-properties-order](http://stylelint.io/user-guide/rules/declaration-block-properties-order/): Properties in declaration blocks must be [sorted according to this list](https://github.com/primer/stylelint-config-primer/blob/1ac303e9a633ee38d168a014dcea10eaf5a95aab/index.js#L45-L215).
* [declaration-block-semicolon-newline-after](http://stylelint.io/user-guide/rules/declaration-block-semicolon-newline-after/): There must always be a newline after the semicolon.
* [declaration-block-semicolon-space-before](http://stylelint.io/user-guide/rules/declaration-block-semicolon-space-before/): There must never be whitespace before the semicolons.
* [declaration-block-single-line-max-declarations](http://stylelint.io/user-guide/rules/declaration-block-single-line-max-declarations/): There should never be more than `1` declaration per line.
* [declaration-block-trailing-semicolon](http://stylelint.io/user-guide/rules/declaration-block-trailing-semicolon/): There must always be a trailing semicolon.
#### Declaration Property
* [declaration-property-value-blacklist](http://stylelint.io/user-guide/rules/declaration-property-value-blacklist/): Specify a blacklist of disallowed property and value pairs within declarations.
* `^transition`: Disallow the use of `all` within transitions.
* `^background`: Disallow the use of `http:` protocols within background image urls.
* `^border`: Disallow the use of the word `none` for borders, use `0` instead.
* `.+`: For everything ban the use of the word `initial`.
#### Font Family
* [font-family-name-quotes](http://stylelint.io/user-guide/rules/font-family-name-quotes/): Expect quotes only when quotes are required according [to the criteria](http://stylelint.io/user-guide/rules/font-family-name-quotes/#options), and disallow quotes in all other cases.
#### Function
* [function-calc-no-unspaced-operator](http://stylelint.io/user-guide/rules/function-calc-no-unspaced-operator/): Disallow an unspaced operator within `calc` functions.
* [function-comma-newline-after](http://stylelint.io/user-guide/rules/function-comma-newline-after/): There must never be a whitespace after the commas in multi-line functions.
* [function-comma-space-after](http://stylelint.io/user-guide/rules/function-comma-space-after/): There must always be a single space after the commas in single-line functions.
* [function-comma-space-before](http://stylelint.io/user-guide/rules/function-comma-space-before/): There must never be whitespace before the commas.
* [function-linear-gradient-no-nonstandard-direction](http://stylelint.io/user-guide/rules/function-linear-gradient-no-nonstandard-direction/): Disallow direction values in `linear-gradient()` calls that are not valid according to the [standard syntax](https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient#Syntax).
* [function-max-empty-lines](http://stylelint.io/user-guide/rules/function-max-empty-lines/): There must never be empty lines within a function.
* [function-name-case](http://stylelint.io/user-guide/rules/function-name-case/): Function names must be written in lowercase.
* [function-parentheses-newline-inside](http://stylelint.io/user-guide/rules/function-parentheses-newline-inside/): There must always be a newline inside the parentheses of multi-line functions.
* [function-parentheses-space-inside](http://stylelint.io/user-guide/rules/function-parentheses-space-inside/): There must always be a single space inside the parentheses of single-line functions.
* [function-url-quotes](http://stylelint.io/user-guide/rules/function-url-quotes/): Urls must always be quoted.
* [function-whitespace-after](http://stylelint.io/user-guide/rules/function-whitespace-after/): There must always be whitespace after the function.
#### General
* [indentation](http://stylelint.io/user-guide/rules/indentation/): Indentation should always be `2` spaces.
* [max-empty-lines](http://stylelint.io/user-guide/rules/max-empty-lines/): Limit the number of adjacent empty lines to `1`.
* [max-nesting-depth](http://stylelint.io/user-guide/rules/max-nesting-depth/): Limit the allowed nesting depth `3`.
* [no-duplicate-selectors](http://stylelint.io/user-guide/rules/no-duplicate-selectors/): Disallow duplicate selectors within a stylesheet.
* [no-eol-whitespace](http://stylelint.io/user-guide/rules/no-eol-whitespace/): Disallow end-of-line whitespace.
* [no-extra-semicolons](http://stylelint.io/user-guide/rules/no-extra-semicolons/): Disallow extra semicolons.
* [no-missing-end-of-source-newline](http://stylelint.io/user-guide/rules/no-missing-end-of-source-newline/): Disallow missing end-of-file newlines in non-empty files.
* [no-unsupported-browser-features](http://stylelint.io/user-guide/rules/no-unsupported-browser-features/): Disallow features that are unsupported by the browsers that [we are targeting in the config](https://github.com/primer/stylelint-config-primer/blob/70866772c3b916be5c62b95cfd94b37dfc6e5b04/index.js#L267)
#### Media Feature
* [media-feature-colon-space-after](http://stylelint.io/user-guide/rules/media-feature-colon-space-after/): There must always be a single space after the colon.
* [media-feature-colon-space-before](http://stylelint.io/user-guide/rules/media-feature-colon-space-before/): There must never be whitespace before the colon.
* [media-feature-no-missing-punctuation](http://stylelint.io/user-guide/rules/media-feature-no-missing-punctuation/): Disallow missing punctuation for non-boolean media features.
* [media-feature-range-operator-space-after](http://stylelint.io/user-guide/rules/media-feature-range-operator-space-after/): There must always be a single space after the range operator.
* [media-feature-range-operator-space-before](http://stylelint.io/user-guide/rules/media-feature-range-operator-space-before/): There must always be a single space before the range operator.
#### Media Query
* [media-feature-parentheses-space-inside](http://stylelint.io/user-guide/rules/media-feature-parentheses-space-inside/): There must never be whitespace on the inside the parentheses.
#### Media Query List
* [media-query-list-comma-newline-after](http://stylelint.io/user-guide/rules/media-query-list-comma-newline-after/): There must always be a newline after the commas in multi-line media query lists.
* [media-query-list-comma-space-after](http://stylelint.io/user-guide/rules/media-query-list-comma-space-after/): There must always be a single space after the commas in single-line media query lists.
* [media-query-list-comma-space-before](http://stylelint.io/user-guide/rules/media-query-list-comma-space-before/): There must never be whitepace before the commas.
#### Number
* [number-leading-zero](http://stylelint.io/user-guide/rules/number-leading-zero/): There must always be a leading zero.
* [number-no-trailing-zeros](http://stylelint.io/user-guide/rules/number-no-trailing-zeros/): Disallow trailing zeros in numbers.
#### Length
* [length-zero-no-unit](http://stylelint.io/user-guide/rules/length-zero-no-unit/): Disallow units for zero lengths.
#### Property
* [property-case](http://stylelint.io/user-guide/rules/property-case/): Properties must be written in lowercase.
* [property-no-vendor-prefix](http://stylelint.io/user-guide/rules/property-no-vendor-prefix/): Disallow vendor prefixes for properties.
* [shorthand-property-no-redundant-values](http://stylelint.io/user-guide/rules/shorthand-property-no-redundant-values/): Disallow redundant values in shorthand properties.
#### Rule
* [rule-nested-empty-line-before](http://stylelint.io/user-guide/rules/rule-nested-empty-line-before/): There must always be an empty line before multi-line rules. _Except_: Nested rules that are the first of their parent rule. _Ignore_: Rules that come after a comment.
* [rule-non-nested-empty-line-before](http://stylelint.io/user-guide/rules/rule-non-nested-empty-line-before/): There must always be an empty line before multi-line rules. _Ignore_: Rules that come after a comment.
#### Selector
* [selector-attribute-brackets-space-inside](http://stylelint.io/user-guide/rules/selector-attribute-brackets-space-inside/): There must never be whitespace on the inside the brackets.
* [selector-attribute-operator-space-after](http://stylelint.io/user-guide/rules/selector-attribute-operator-space-after/): There must never be a single after after the operator.
* [selector-attribute-operator-space-before](http://stylelint.io/user-guide/rules/selector-attribute-operator-space-before/): There must never be a single before after the operator.
* [selector-combinator-space-after](http://stylelint.io/user-guide/rules/selector-combinator-space-after/): There must always be a single space after the combinators.
* [selector-combinator-space-before](http://stylelint.io/user-guide/rules/selector-combinator-space-before/): There must always be a single space before the combinators.
* [selector-max-compound-selectors](http://stylelint.io/user-guide/rules/selector-max-compound-selectors/): Limit the number of compound selectors in a selector to `3`.
* [selector-max-empty-lines](http://stylelint.io/user-guide/rules/selector-max-empty-lines/): Limit the number of adjacent empty lines within selectors to `0`.
* [selector-max-specificity](http://stylelint.io/user-guide/rules/selector-max-specificity/): Limit the specificity of selectors to `"0,4,0"`.
* [selector-no-id](http://stylelint.io/user-guide/rules/selector-no-id/): Disallow id selectors.
* [selector-no-qualifying-type](http://stylelint.io/user-guide/rules/selector-no-qualifying-type/): Disallow qualifying a selector by type.
* [selector-no-type](http://stylelint.io/user-guide/rules/selector-no-type/): Disallow type selectors.
* [selector-pseudo-class-case](http://stylelint.io/user-guide/rules/selector-pseudo-class-case/): pseudo-class selectors should always be lowercase.
* [selector-pseudo-class-parentheses-space-inside](http://stylelint.io/user-guide/rules/selector-pseudo-class-parentheses-space-inside/): There must never be whitespace on the inside the parentheses.
* [selector-pseudo-element-case](http://stylelint.io/user-guide/rules/selector-pseudo-element-case/): pseudo-element selectors should always be lowercase.
* [selector-pseudo-element-colon-notation](http://stylelint.io/user-guide/rules/selector-pseudo-element-colon-notation/): Applicable pseudo-elements must always use the double colon notation.
* [selector-pseudo-element-no-unknown](http://stylelint.io/user-guide/rules/selector-pseudo-element-no-unknown/): Disallow unknown pseudo-element selectors.
* [selector-type-case](http://stylelint.io/user-guide/rules/selector-type-case/): Type selectors must always be written in lowercase.
#### Selector List
* [selector-list-comma-newline-after](http://stylelint.io/user-guide/rules/selector-list-comma-newline-after/): There must always be a newline after the commas.
* [selector-list-comma-space-before](http://stylelint.io/user-guide/rules/selector-list-comma-space-before/): There must never be whitespace before the commas.
#### String
* [string-no-newline](http://stylelint.io/user-guide/rules/string-no-newline/): Disallow (unescaped) newlines in strings.
* [string-quotes](http://stylelint.io/user-guide/rules/string-quotes/): Strings must always be wrapped with double quotes.
#### Unit
* [unit-case](http://stylelint.io/user-guide/rules/unit-case/): Units must be written in lowercase.
* [unit-no-unknown](http://stylelint.io/user-guide/rules/unit-no-unknown/): Disallow unknown units.
#### Value
* [value-no-vendor-prefix](http://stylelint.io/user-guide/rules/value-no-vendor-prefix/): Disallow vendor prefixes for values.
#### Value list
* [value-list-comma-newline-after](http://stylelint.io/user-guide/rules/value-list-comma-newline-after/): There must always be a newline after the commas in multi-line value lists.
* [value-list-comma-space-after](http://stylelint.io/user-guide/rules/value-list-comma-space-after/): There must always be a single space after the commas in single-line value lists.
* [value-list-comma-space-before](http://stylelint.io/user-guide/rules/value-list-comma-space-before/): There must never be whitespace before the commas.
## License
[MIT](./LICENSE) © [GitHub](https://github.com/)

View File

@ -0,0 +1,325 @@
module.exports = {
"plugins": [
"stylelint-no-unsupported-browser-features",
"stylelint-order",
"stylelint-selector-no-utility",
"stylelint-scss",
],
"rules": {
"at-rule-blacklist": ["extend"],
"at-rule-name-case": "lower",
"at-rule-name-space-after": "always-single-line",
"at-rule-semicolon-newline-after": "always",
"block-closing-brace-newline-after": "always",
"block-closing-brace-newline-before": "always-multi-line",
"block-closing-brace-space-before": "always-single-line",
"block-no-empty": true,
"block-opening-brace-newline-after": "always-multi-line",
"block-opening-brace-space-after": "always-single-line",
"block-opening-brace-space-before": "always",
"color-hex-case": "lower",
"color-hex-length": "short",
"color-named": "never",
"color-no-invalid-hex": true,
"comment-empty-line-before": [
"always",
{
"except": [
"first-nested"
],
"ignore": [
"stylelint-commands"
]
}
],
"comment-whitespace-inside": "always",
"declaration-bang-space-after": "never",
"declaration-bang-space-before": "always",
"declaration-block-no-duplicate-properties": [
true,
{
"ignore": [
"consecutive-duplicates"
]
}
],
"declaration-block-no-shorthand-property-overrides": true,
"order/properties-order": [
"position",
"top",
"right",
"bottom",
"left",
"z-index",
"display",
"float",
"width",
"min-width",
"max-width",
"height",
"min-height",
"max-height",
"box-sizing",
"padding",
"padding-top",
"padding-right",
"padding-bottom",
"padding-left",
"margin",
"margin-top",
"margin-right",
"margin-bottom",
"margin-left",
"overflow",
"overflow-x",
"overflow-y",
"clip",
"clear",
"font",
"font-family",
"font-size",
"font-style",
"font-weight",
"font-variant",
"font-size-adjust",
"font-stretch",
"font-effect",
"font-emphasize",
"font-emphasize-position",
"font-emphasize-style",
"font-smooth",
"hyphens",
"line-height",
"color",
"text-align",
"text-align-last",
"text-emphasis",
"text-emphasis-color",
"text-emphasis-style",
"text-emphasis-position",
"text-decoration",
"text-indent",
"text-justify",
"text-outline",
"text-overflow",
"text-overflow-ellipsis",
"text-overflow-mode",
"text-shadow",
"text-transform",
"text-wrap",
"letter-spacing",
"word-break",
"word-spacing",
"word-wrap",
"tab-size",
"white-space",
"vertical-align",
"list-style",
"list-style-position",
"list-style-type",
"list-style-image",
"pointer-events",
"fill",
"fill-opacity",
"stroke",
"stroke-opacity",
"stroke-width",
"shape-rendering",
"cursor",
"visibility",
"zoom",
"flex-direction",
"flex-order",
"flex-pack",
"flex-align",
"table-layout",
"empty-cells",
"caption-side",
"border-spacing",
"border-collapse",
"content",
"quotes",
"counter-reset",
"counter-increment",
"resize",
"user-select",
"nav-index",
"nav-up",
"nav-right",
"nav-down",
"nav-left",
"background",
"background-color",
"background-image",
"filter",
"background-repeat",
"background-attachment",
"background-position",
"background-position-x",
"background-position-y",
"background-clip",
"background-origin",
"background-size",
"border",
"border-color",
"border-style",
"border-width",
"border-top",
"border-top-color",
"border-top-style",
"border-top-width",
"border-right",
"border-right-color",
"border-right-style",
"border-right-width",
"border-bottom",
"border-bottom-color",
"border-bottom-style",
"border-bottom-width",
"border-left",
"border-left-color",
"border-left-style",
"border-left-width",
"border-radius",
"border-top-left-radius",
"border-top-right-radius",
"border-bottom-right-radius",
"border-bottom-left-radius",
"border-image",
"border-image-source",
"border-image-slice",
"border-image-width",
"border-image-outset",
"border-image-repeat",
"outline",
"outline-width",
"outline-style",
"outline-color",
"outline-offset",
"box-shadow",
"opacity",
"transition",
"transition-delay",
"transition-timing-function",
"transition-duration",
"transition-property",
"transform",
"transform-origin",
"animation",
"animation-name",
"animation-duration",
"animation-fill-mode",
"animation-play-state",
"animation-timing-function",
"animation-delay",
"animation-iteration-count",
"animation-direction"
],
"declaration-block-semicolon-newline-after": "always",
"declaration-block-semicolon-space-before": "never",
"declaration-block-single-line-max-declarations": 1,
"declaration-block-trailing-semicolon": "always",
"declaration-colon-newline-after": "always-multi-line",
"declaration-colon-space-after": "always-single-line",
"declaration-colon-space-before": "never",
"declaration-property-value-blacklist": {
"/^transition/": [
"/all/"
],
"/^background/": [
"http:",
"https:"
],
"/^border/": [
"none"
],
"/.+/": [
"initial"
]
},
"font-family-name-quotes": "always-where-recommended",
"function-calc-no-unspaced-operator": true,
"function-comma-newline-after": "always-multi-line",
"function-comma-space-after": "always-single-line",
"function-comma-space-before": "never",
"function-linear-gradient-no-nonstandard-direction": true,
"function-max-empty-lines": 0,
"function-name-case": "lower",
"function-parentheses-newline-inside": "always-multi-line",
"function-parentheses-space-inside": "never-single-line",
"function-url-quotes": "always",
"function-whitespace-after": "always",
"indentation": 2,
"length-zero-no-unit": true,
"max-empty-lines": 1,
"max-nesting-depth": 3,
"media-feature-colon-space-after": "always",
"media-feature-colon-space-before": "never",
"media-feature-parentheses-space-inside": "never",
"media-feature-range-operator-space-after": "always",
"media-feature-range-operator-space-before": "always",
"media-query-list-comma-newline-after": "always-multi-line",
"media-query-list-comma-space-after": "always-single-line",
"media-query-list-comma-space-before": "never",
"no-duplicate-selectors": true,
"no-eol-whitespace": true,
"no-extra-semicolons": true,
"no-missing-end-of-source-newline": true,
"number-leading-zero": "always",
"number-no-trailing-zeros": true,
"plugin/no-unsupported-browser-features": [true, {
"severity": "warning",
"browsers": [
"> 5%",
"last 2 firefox versions",
"last 2 chrome versions",
"last 2 safari versions",
"last 2 edge versions",
"ie 11"
]
}],
"primer/selector-no-utility": true,
"property-case": "lower",
"property-no-vendor-prefix": true,
"rule-empty-line-before": [
"always-multi-line",
{
"except": [
"first-nested"
],
"ignore": [
"after-comment"
]
}
],
"scss/selector-no-redundant-nesting-selector": true,
"selector-attribute-brackets-space-inside": "never",
"selector-attribute-operator-space-after": "never",
"selector-attribute-operator-space-before": "never",
"selector-combinator-space-after": "always",
"selector-combinator-space-before": "always",
"selector-list-comma-newline-after": "always",
"selector-list-comma-space-before": "never",
"selector-max-compound-selectors": 3,
"selector-max-empty-lines": 0,
"selector-max-id": 0,
"selector-max-specificity": "0,4,0",
"selector-max-type": 0,
"selector-no-qualifying-type": true,
"selector-pseudo-class-case": "lower",
"selector-pseudo-class-parentheses-space-inside": "never",
"selector-pseudo-element-case": "lower",
"selector-pseudo-element-colon-notation": "double",
"selector-pseudo-element-no-unknown": true,
"selector-type-case": "lower",
"shorthand-property-no-redundant-values": true,
"string-no-newline": true,
"string-quotes": "double",
"unit-case": "lower",
"unit-no-unknown": true,
"value-list-comma-newline-after": "always-multi-line",
"value-list-comma-space-after": "always-single-line",
"value-list-comma-space-before": "never",
"value-no-vendor-prefix": true,
},
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,45 @@
{
"name": "stylelint-config-primer",
"version": "2.1.0",
"description": "Sharable stylelint config used by GitHub's CSS",
"main": "index.js",
"scripts": {
"ava": "ava --verbose \"tests/**/*.js\"",
"lint": "eslint **/*.js",
"test": "npm run lint && npm run ava"
},
"repository": {
"type": "git",
"url": "git+https://github.com/primer/stylelint-config-primer.git"
},
"keywords": [
"github",
"primer",
"stylelint-config",
"stylelint",
"css"
],
"author": "GitHub, Inc.",
"license": "MIT",
"bugs": {
"url": "https://github.com/primer/stylelint-config-primer/issues"
},
"homepage": "https://github.com/primer/stylelint-config-primer#readme",
"dependencies": {
"stylelint-no-unsupported-browser-features": "^1.0.0",
"stylelint-order": "^0.4.4",
"stylelint-scss": "^1.4.1",
"stylelint-selector-no-utility": "^1.7.0"
},
"devDependencies": {
"ava": "^0.20.0",
"eslint": "^3.19.0",
"eslint-plugin-import": "^2.2.0",
"eslint-rule-documentation": "^1.0.11",
"eslint-plugin-github": "^0.12.0",
"stylelint": "^7.13.0"
},
"peerDependencies": {
"stylelint": "^7.13.0"
}
}

View File

@ -0,0 +1,69 @@
const config = require("../")
const stylelint = require("stylelint")
const test = require("ava")
const validCss =
`.selector-x { width: 10%; }
.selector-y { width: 20%; }
.selector-z { width: 30%; }
`
const invalidCss =
`.foo {
color: #fff;
top: .2em;
}
`
test("stylelint runs with config", t => {
return stylelint.lint({
code: "a { font-weight: bold; }",
config: config
})
.then(data => {
t.truthy(true, "config works")
t.truthy(data, "data exists")
})
})
test("no warnings with valid css", t => {
return stylelint.lint({
code: validCss,
config: config,
})
.then(data => {
const {errored, results} = data
const {warnings} = results[0]
t.falsy(errored, "no errored")
t.is(warnings.length, 0, "flags no warnings")
})
})
test("a warning with invalid css", t => {
return stylelint.lint({
code: invalidCss,
config: config,
})
.then(data => {
const {errored, results} = data
const {warnings} = results[0]
t.truthy(errored, "errored")
t.is(warnings.length, 2, "flags two warning")
t.is(warnings[0].text, 'Expected "top" to come before "color" (order/properties-order)', "correct warning text")
t.is(warnings[1].text, "Expected a leading zero (number-leading-zero)", "correct warning text")
})
})
test("No deprecated config", t => {
return stylelint.lint({
code: "",
config: config,
syntax: "scss"
})
.then(data => {
const {errored, results} = data
t.falsy(errored, "errored")
t.not(results.length, 0, "Did not find any resutls")
t.is(results[0].deprecations.length, 0, `Expected there to be no deprecated config warnings. Please fix these:\n\n${results[0].deprecations.map(d => d.text).join("\n")}`)
})
})