Giter Site home page Giter Site logo

donov4n / stylelint-find-new-rules Goto Github PK

View Code? Open in Web Editor NEW
14.0 14.0 4.0 801 KB

Find stylelint rules that you don't have in your custom config.

Home Page: https://npm.im/stylelint-find-new-rules

License: MIT License

JavaScript 100.00%
stylelint

stylelint-find-new-rules's Introduction

Hello, i'm Donovan ๐Ÿ‘‹

Donovan Lambert | LinkedIn Donovan Lambert | Twitter Donovan Lambert | DEV Profile Donovan Lambert | E-mail

To infinity and beyond!

I'm a french senior web engineer currently working primarily with Javascript for building better front-ends. (but i have also a solid background in PHP, DevOps (Chef, Docker, CI / CD), Ruby and others tools / languages)

My work is quite oriented around tooling, developer experience and great & responsive interfaces.

Languages and Tools:

Our work at Pulsanova

I currently work for Pulsanova, a web agency specialized in migrating legacy apps to current and proven technologies (e.g. jQuery / Twig => React / Vue SPA) with a particular concern to accompany the teams in place on this new stack (with long-term support / code-review / online workshop and more).

Why migrate to new technologies when what we use already do the job? ๐Ÿค”

The web is slow, especially with legacy technologies not adapted to today's internet and to the expectations of our visitors.
(and the last thing you want is to lose your visitors because your application is slow, whether it's felt or real)

๐Ÿš€ We propose to set up tools and best practices to give your frontend a feeling of instantaneousness / reactivity, rework the UX (user experience) and as a bonus, our intervention generally reduces the "technical debt", accumulated over the years. We also systematically add tools to ensure the quality and durability of the code.

Unfortunately I don't have the space here to list all the benefits that our intervention can have on your application (and therefore, your business), so don't hesitate to contact me directly, I will be happy to discuss it with you.

stylelint-find-new-rules's People

Contributors

alexilyaev avatar axten avatar donov4n avatar ntwb avatar thibaudcolas avatar vincentbriglia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

stylelint-find-new-rules's Issues

Doesn't work with local configuration

We inherit from a local file, which causes an error with stylelint-find-new-rules:

$ stylelint-find-new-rules
Error: Invalid or unexpected token

Here's our .stylelintrc.yml:

extends:
  - stylelint-config-standard-scss
  - ./.stylelint_todo.yml
And here's our `.stylelint_todo.yml`:
# This configuration was generated by `exe/stylelint_autogen`
# on 2022-03-02 23:08:55 UTC.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.

overrides:

  # Offense count: 11
  - rules: { 'at-rule-empty-line-before': null }
    files:
    - app/assets/stylesheets/application.scss
    - app/assets/stylesheets/jquery_ui.scss
    - app/assets/stylesheets/legacy.scss

  # Offense count: 2
  - rules: { 'block-closing-brace-empty-line-before': null }
    files:
    - app/assets/stylesheets/refresh/_layouts.scss
    - app/assets/stylesheets/refresh/pages/_campaigns.scss

  # Offense count: 1
  - rules: { 'block-closing-brace-newline-before': null }
    files:
    - app/assets/stylesheets/refresh/pages/_steps.scss

  # Offense count: 5
  - rules: { 'declaration-block-no-redundant-longhand-properties': null }
    files:
    - app/assets/stylesheets/refresh/_layouts.scss
    - app/assets/stylesheets/refresh/pages/_console.scss
    - app/assets/stylesheets/refresh/pages/_forms_team.scss
    - app/assets/stylesheets/refresh/pages/_inbox.scss

  # Offense count: 1
  - rules: { 'declaration-block-trailing-semicolon': null }
    files:
    - app/assets/stylesheets/refresh/pages/_steps.scss

  # Offense count: 4
  - rules: { 'declaration-colon-newline-after': null }
    files:
    - app/assets/stylesheets/components/_fields.scss
    - app/assets/stylesheets/doc_editor/_context_menu.scss
    - app/assets/stylesheets/vendor/_fonts.scss

  # Offense count: 2
  - rules: { 'font-family-name-quotes': null }
    files:
    - app/assets/stylesheets/refresh/pages/_campaigns.scss

  # Offense count: 2
  - rules: { 'font-family-no-missing-generic-family-keyword': null }
    files:
    - app/assets/stylesheets/refresh/pages/_campaigns.scss

  # Offense count: 16
  - rules: { 'indentation': null }
    files:
    - app/assets/stylesheets/components/_fields.scss
    - app/assets/stylesheets/doc_editor/_context_menu.scss
    - app/assets/stylesheets/vendor/_fonts.scss

  # Offense count: 73
  - rules: { 'max-empty-lines': null }
    files:
    - app/assets/stylesheets/legacy/variables/_bootstrap.scss
    - app/assets/stylesheets/refresh/pages/_campaigns.scss
    - app/assets/stylesheets/refresh/pages/_test_approvers.scss
    - app/assets/stylesheets/refresh/variables/_bootstrap.scss

  # Offense count: 19
  - rules: { 'max-line-length': null }
    files:
    - app/assets/stylesheets/legacy/variables/_bootstrap.scss
    - app/assets/stylesheets/mailer.css.scss
    - app/assets/stylesheets/refresh/variables/_bootstrap.scss
    - app/assets/stylesheets/vendor/_fonts.scss

  # Offense count: 1
  - rules: { 'no-extra-semicolons': null }
    files:
    - app/assets/stylesheets/refresh/pages/_campaigns.scss

  # Offense count: 1
  - rules: { 'property-no-unknown': null }
    files:
    - app/assets/stylesheets/mailer.css.scss

  # Offense count: 3
  - rules: { 'property-no-vendor-prefix': null }
    files:
    - app/assets/stylesheets/admin.scss
    - app/assets/stylesheets/mailer.css.scss

  # Offense count: 25
  - rules: { 'scss/at-extend-no-missing-placeholder': null }
    files:
    - app/assets/stylesheets/doc_editor/_toolbar.scss
    - app/assets/stylesheets/legacy.scss
    - app/assets/stylesheets/legacy/bootstrap_with_overrides.scss
    - app/assets/stylesheets/refresh/extensions/_bootstrap.scss
    - app/assets/stylesheets/refresh/overrides/_bootstrap.scss
    - app/assets/stylesheets/refresh/pages/_responses.scss
    - app/assets/stylesheets/wizard.scss

  # Offense count: 1
  - rules: { 'scss/at-import-partial-extension': null }
    files:
    - app/assets/stylesheets/jquery_ui.scss

  # Offense count: 1
  - rules: { 'scss/at-mixin-argumentless-call-parentheses': null }
    files:
    - app/assets/stylesheets/group_wizard/_reviewer_column.scss

  # Offense count: 88
  - rules: { 'scss/comment-no-empty': null }
    files:
    - app/assets/stylesheets/actiontext.scss
    - app/assets/stylesheets/legacy/variables/_bootstrap.scss
    - app/assets/stylesheets/refresh/variables/_bootstrap.scss

  # Offense count: 274
  - rules: { 'scss/dollar-variable-colon-space-after': null }
    files:
    - app/assets/stylesheets/legacy/variables/_bootstrap.scss
    - app/assets/stylesheets/refresh/variables/_bootstrap.scss

  # Offense count: 1
  - rules: { 'scss/dollar-variable-empty-line-before': null }
    files:
    - app/assets/stylesheets/wizard.scss

  # Offense count: 437
  - rules: { 'scss/double-slash-comment-whitespace-inside': null }
    files:
    - app/assets/stylesheets/actiontext.scss
    - app/assets/stylesheets/components/_fields.scss
    - app/assets/stylesheets/form_filler/_tooltips.scss
    - app/assets/stylesheets/legacy/variables/_bootstrap.scss
    - app/assets/stylesheets/legacy/variables/_colors.scss
    - app/assets/stylesheets/refresh/variables/_bootstrap.scss

  # Offense count: 15
  - rules: { 'scss/no-global-function-names': null }
    files:
    - app/assets/stylesheets/legacy/variables/_bootstrap.scss
    - app/assets/stylesheets/legacy/variables/_colors.scss
    - app/assets/stylesheets/refresh/pages/_inbox.scss
    - app/assets/stylesheets/refresh/variables/_bootstrap.scss

  # Offense count: 4
  - rules: { 'selector-attribute-quotes': null }
    files:
    - app/assets/stylesheets/refresh/extensions/_bootstrap.scss
    - app/assets/stylesheets/refresh/pages/_header.scss
    - app/assets/stylesheets/tree/_search_results.scss

  # Offense count: 3
  - rules: { 'selector-id-pattern': null }
    files:
    - app/assets/stylesheets/tree/campaigns/_new.scss

  # Offense count: 2
  - rules: { 'selector-no-vendor-prefix': null }
    files:
    - app/assets/stylesheets/components/_html_form_validation.scss
    - app/assets/stylesheets/tree/_main.scss

  # Offense count: 1
  - rules: { 'selector-pseudo-class-no-unknown': null }
    files:
    - app/assets/stylesheets/admin.scss

  # Offense count: 12
  - rules: { 'value-keyword-case': null }
    files:
    - app/assets/stylesheets/legacy/variables/_bootstrap.scss
    - app/assets/stylesheets/refresh/variables/_bootstrap.scss

  # Offense count: 1
  - rules: { 'value-list-comma-newline-after': null }
    files:
    - app/assets/stylesheets/vendor/_fonts.scss

  # Offense count: 1
  - rules: { 'value-no-vendor-prefix': null }
    files:
    - app/assets/stylesheets/refresh/pages/_routing.scss

rules:

  # Offense count: 24
  'alpha-value-notation': null

  # Offense count: 26
  'color-function-notation': null

  # Offense count: 76
  'declaration-empty-line-before': null

  # Offense count: 79
  'no-descending-specificity': null

  # Offense count: 88
  'number-leading-zero': null

  # Offense count: 159
  'scss/double-slash-comment-empty-line-before': null

  # Offense count: 277
  'scss/operator-no-unspaced': null

  # Offense count: 214
  'selector-class-pattern': null

  # Offense count: 275
  'string-quotes': null

Ignore `deprecated` rules

I'm using the stylelint-find-new-rules script to find all rules which are currently not configured.
In Stylelint v15, all stylistic rules are marked as deprecated, so I've removed them from my configuration.

Now stylelint-find-new-rules lists all of them as [UNUSED] Available rules that are not configured.
Is it possible through the command line tool to show all unused rules, which are NOT marked as deprecated? Because it does not make sense to add deprecated rules.

--no-d has no effect.

Why not collaborate?

Hi @Donov4n,

I created stylelint-find-rules

It's really cool that you took it a step forward.
I was wondering what was the reasoning behind making a new package instead of trying to collaborate on the exiting one (besides me not being so active on it)?

Doesn't work with `extends: [stylelint-prettier/recommended]`

[adrian@blackhole:~/dev/indico/src:style-lint *$]> npx stylelint-find-new-rules
npx: installed 68 in 2.488s
Error: Cannot use import statement outside a module

This happens during _gatherPluginsRules(extendedConfig); if I skip it for the stylelint-prettier/recommended extends entry everything works fine; same if I remove this particular extend from my config.

CLI should use a non-zero exit code if rules are outdated

At the moment the CLI stops with an exit code of 0 regardless of what outdated / invalid / unused rules it found.

I would like to use this tool so I know exactly what rules have been introduced in the selection of plugins I'm using, and what might be changing in plugins. It would be nice to be able to do this in CI, so the build of my config breaks if an outdated / invalid rule is used โ€“ย a non-zero exit code would be a nice way to do that.

In the meantime I'm manually checking the output from the tool:

stylelint-find-new-rules src/unused.js --unused --deprecated --invalid | tee /dev/tty | grep 'All rules are up-to-date!' -c -q

This works, but feels unnecessarily complex.

"Error: The "id" argument must be of type string. Received [Object: null prototype] [Module]" on `plugin objects`

stylelint allows to use

[...] either plugin objects or "locaters" identifying the plugins [...]

See https://stylelint.io/user-guide/configure/#plugins

If I'm using plugin objects (either directly or by importing them using require/dynamic imports), stylelint-find-new-rules stops with the error:

Error: The "id" argument must be of type string. Received [Object: null prototype] [Module]

The problem is here:

https://github.com/Donov4n/stylelint-find-new-rules/blob/5c2e6813775da19689a5656d45e71c4ce0712e54/lib/utils/rules.js#L14C24-L14C24

were you don't check if the plugin is a "locater" or a plugin object.

Support for Stylelint v15

Similar to #12, can this package be updated to support Stylelint v15?

https://github.com/stylelint/stylelint/blob/main/docs/migration-guide/to-15.md

npm ERR! Found: [email protected]
npm ERR! node_modules/stylelint
npm ERR!   dev stylelint@"^15.2.0" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer stylelint@"^14" from [email protected]
npm ERR! node_modules/stylelint-find-new-rules
npm ERR!   dev stylelint-find-new-rules@"*" from the root project
npm ERR! 
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.

Stylelint v14 support

It would be great if this code could be updated to support Stylelint v14, because right now npm returns this error on installation:

npm ERR! Found: [email protected]
npm ERR! node_modules/stylelint
npm ERR! stylelint@"14.0.1" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer stylelint@"^13" from [email protected]
npm ERR! node_modules/stylelint-find-new-rules
npm ERR! dev stylelint-find-new-rules@"3.0.2" from the root project

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.