
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
stylehacks
Advanced tools
The stylehacks npm package is designed to detect and remove hacks from CSS files. These hacks are often used to target specific browsers with CSS rules that wouldn't be valid or necessary in a standards-compliant browser. By identifying and removing these hacks, stylehacks helps in cleaning up CSS files, making them more maintainable and potentially reducing file size.
Detecting CSS hacks
This feature allows the detection and automatic removal of CSS hacks. The code sample demonstrates how to use stylehacks with PostCSS to process a CSS string that contains a hack (`_color: red`), which is targeted at old versions of IE, and remove it.
"const stylehacks = require('stylehacks');
const postcss = require('postcss');
postcss([ stylehacks() ])
.process('h1 { _color: red }', { from: undefined })
.then(result => {
console.log(result.css);
// Output will be 'h1 { }' as the hack is removed
});"
Whitelisting specific hacks
This feature allows users to lint for hacks without removing them, useful for cases where a hack is intentionally being used. The code sample shows how to use stylehacks in lint mode, which will not remove the hack but can be used to report or log its presence.
"const stylehacks = require('stylehacks');
const postcss = require('postcss');
postcss([ stylehacks({ lint: true }) ])
.process('h1 { _color: red }', { from: undefined })
.then(result => {
console.log(result.css);
// Output will be the same input 'h1 { _color: red }' as it only lints
});"
While not exclusively focused on removing CSS hacks, PostCSS is a tool for transforming CSS with JavaScript plugins, one of which is stylehacks. PostCSS provides a broader range of functionalities for working with CSS, including autoprefixing, minification, and custom properties, making it more versatile but also more complex.
clean-css is a fast and efficient CSS optimizer that can minify CSS files, including restructuring, removing unused CSS, and applying various optimizations. While it doesn't specifically target CSS hacks like stylehacks does, it contributes to the overall goal of optimizing and cleaning CSS files.
cssnano is a modular CSS minifier that integrates with PostCSS, similar to stylehacks. It focuses on optimizing CSS files by reducing their size for production environments. cssnano includes functionalities for removing outdated browser prefixes, minifying font values, and discarding comments, among others. While it shares the goal of optimizing CSS, cssnano doesn't specifically target CSS hacks for removal but rather focuses on a wide range of optimizations.
Detect/remove browser hacks from CSS files.
With npm do:
npm install stylehacks --save
In its default mode, stylehacks will remove hacks from your CSS file, based on the browsers that you wish to support.
h1 {
_color: white;
color: rgba(255, 255, 255, 0.5);
}
h1 {
color: rgba(255, 255, 255, 0.5);
}
stylehacks.detect(node)
Type: function
Returns: boolean
This method will take any PostCSS node, run applicable plugins depending on
its type, then will return a boolean depending on whether it found any of
the supported hacks. For example, if the decl
node found below is passed to
the detect
function, it will return true
. But if the rule
node is passed,
it will return false
instead.
h1 { _color: red }
postcss([ stylehacks(opts) ])
stylehacks can also be consumed as a PostCSS plugin. See the documentation for examples for your environment.
Type: boolean
Default: false
If lint mode is enabled, stylehacks will not remove hacks from the CSS; instead,
it will add warnings to Result#messages
.
stylehacks works well with your existing PostCSS setup:
Pull requests are welcome. If you add functionality, then please add unit tests to cover it.
MIT © Ben Briggs
FAQs
Detect/remove browser hacks from CSS files.
We found that stylehacks demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 7 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.