betterer
stylelint
betterer | stylelint | |
---|---|---|
5 | 45 | |
563 | 10,831 | |
- | 0.4% | |
4.3 | 9.6 | |
16 days ago | 2 days ago | |
TypeScript | JavaScript | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
betterer
-
How to Effortlessly Improve a Legacy Codebase Using Robots
We first took a shot at addressing this gradually using a tool called Betterer, which works by taking a snapshot of the state of a set of errors, warnings, or undesired regular expressions in the codebase and surfacing changes in pull request diffs. Betterer had served us well in the past, such as when it helped us deprecate the Enzyme testing framework in favor of React testing library. However, because there were so many instances of noImplicitAny errors in the codebase, we found that much like snapshot tests, reviewers had begun to ignore Betterer results and we weren’t in fact getting better at all. Begrudgingly, we removed the rule from our Betterer tests and agreed to find a different way to enforce it. Luckily, this decision took place just in time for Snoosweek (Reddit’s internal hack week) so I was able to invest a few days into adding a new automation step to ensure incremental progress toward adherence to this rule.
-
Betterer v5.0.0 5️⃣
Check out the beast of a PR here (and yes, it took me three branches to get it right 😅)
-
Incrementally adding Stylelint rules with Betterer
I just released v4.0.0 of Betterer 🎉 (now with sweet new docs!) and it has a bunch of simplified APIs for writing tests. And just before I shipped it, I got an issue asking how to write a Stylelint test, so let's do it here and explain it line by line:
-
Conventions Don’t Matter – What Matters Is Consistency
You may think that is a bad idea, and stops innovation and adopting new trends and technologies. I dare to disagree. New conventions can be agreed on, and when a new convention is agreed on, it should be used in the codebase from that day on. Either by refactoring the whole code base to follow the new convention, which should be doable if the previous convention was followed carefully, or by using tools such as phenomnomnominal/betterer to incrementally adopt a new convention, and stop anyone from adding new code that does not follow the newly agreed convention. It is equally important to document the agreed conventions and keep the documentation up-to-date over time in addition to making sure everyone on the team hears about and understands the agreed conventions.
-
Lazy debug logging for Node.js
I have a tool that I've been working on for a while, and debugging it can be kind of a pain - especially when it's running inside VS Code. It'd be nice to have an easy way to get information about what is going on when the tool runs, without having to manually write a bunch of debug logging code and release a new version. That means that the usual approaches are not going to work:
stylelint
-
Streamline Your Workflow: A Guide to Normalising Git Commit and Push Processes
There are more linting tools that I won't go into deeply, but you can integrate them with lint-staged. For example, you can lint your CSS content with Stylelint, or even lint your README files with markdownlint, etc.
-
Why it is Important to Update Linters and How to Do it Right
Another common way to extend configs in linters is using the extends key in the configuration file. Let's take StyleLint as an example:
-
How to Improve Development Experience of your React Project
Stylelint is similar to ESLint, but its focus is on styling rather than JavaScript. It helps you find errors in style files, such as old syntax or empty classes. We will also incorporate stylelint-config-clean-order to sort your style rules and group them consistently across the entire codebase.
-
Speeding up the JavaScript ecosystem – The barrel file debacle
The “cost of loading modules” diagram shows non-linear behaviour (though you should largely ignore the curve visible in the diagram because the x axis is way off linear):
• 0.15s ÷ 500 = 0.3ms
• 0.31s ÷ 1000 = 0.31ms
• 3.12s ÷ 10000 = 0.312ms
• 16.81s ÷ 25000 = 0.6724ms
• 48.44s ÷ 50000 = 0.9688ms
My own observation on a Surface Book six years ago was that in Node.js under Windows, each module had about 1ms of overhead when there was warm file system cache—that is, simply bundling with Rollup saved 1ms per file. If this sort of thing interests you, quite a lot of useful stuff came out of https://github.com/stylelint/stylelint/issues/2454 which I filed because I was unhappy with stylelint taking over a second to import. And that must have been only in the order of one or two thousand modules, when the behaviour is still close enough to linear.
-
Don't sound like a robot: use CSS to Control Text-to-Speech
As the property is still experimental, stylelint does not recognize it yet at the time of writing this, so let's explicitly disable the property-no-unknown rule only where we use it by adding a stylelint-disable comment and re-enable it afterwards.
-
How to upskill my skills?
Document your build process in a blog, use eslint, stylelint and jsx-a11y lint. Run a lighthouse performance test, follow the optimisation reccomendations.
-
How to Effortlessly Improve a Legacy Codebase Using Robots
Run static analysis e.g. lint with lockfile-lint, Stylelint, ESLint, check for unimported files using unimported, and identify potential security vulnerabilities
-
10 CSS Tools AI Can Integrate With for Improved Website Design
Stylelint
-
How can I have CSS automatically formatted so that all of the properties are in order by length, as I type?
I use StyleLint (https://stylelint.io/) to lint my css/scss. I don't think that's a rule, but writing a custom rule isn't too tough. And you can use the vscode extension - https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint
-
Deno Fresh PostCSS: Future CSS with Deno
The complete code for this project is in the Rodney Lab GitHub repo. I do hope the post has either helped you with an existing project or provided some inspiration for a new one. As an extension, you can add all your favourite future CSS rules to the PostCSS config. Beyond PostCSS for linting your input CSS, consider trying stylelint.
What are some alternatives?
peeky - A fast and fun test runner for Vite & Node 🐈️ Powered by Vite ⚡️
Next.js - The React Framework
vitest - Next generation testing framework powered by Vite.
lint-staged - 🚫💩 — Run linters on git staged files
n - Node version management
commitlint - 📓 Lint commit messages
unimported - Find and fix dangling files and unused dependencies in your JavaScript projects.
Symfony Encore - A simple but powerful API for processing & compiling assets built around Webpack
action-junit-report - Reports junit test results as GitHub Pull Request Check
Nuxt.js - Nuxt is an intuitive and extendable way to create type-safe, performant and production-grade full-stack web apps and websites with Vue 3. [Moved to: https://github.com/nuxt/nuxt]
WebdriverIO - Next-gen browser and mobile automation test framework for Node.js
husky - Git hooks made easy 🐶 woof!