CSS Style to JavaScript Object Parser

1.1.21 · active · verified Sun Apr 19

style-to-js is a lightweight JavaScript utility library designed to parse CSS inline style strings into a plain JavaScript object. It automatically converts kebab-cased CSS properties (e.g., `background-color`) into their camelCased JavaScript equivalents (e.g., `backgroundColor`), which is particularly useful for dynamically applying styles in environments like React or other component-based UI frameworks. The current stable version is `1.1.21`. The package maintains a relatively active release cadence, primarily focusing on dependency updates and minor bug fixes, with no recent major version changes. It differentiates itself by its straightforward API, handling of standard CSS properties, vendor prefixes (with an optional `reactCompat` flag for capitalized prefixes), and CSS custom properties. It's important to note that it performs minimal validation; it will process most input strings into camelCased properties, but silently removes declarations with missing values. Malformed syntax, such as properties missing colons or unclosed comments, will result in runtime errors.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates basic parsing, camelCasing, vendor prefix handling with `reactCompat`, and how invalid declarations are processed.

import parse from 'style-to-js';
// The library's default export is named 'StyleToJS', commonly aliased as 'parse'.

const cssStringBasic = 'background-color: #BADA55; padding: 10px; font-size: 16px;';
const jsObjectBasic = parse(cssStringBasic);
console.log('Parsed Basic CSS (camelCased):', jsObjectBasic);
// Expected: { "backgroundColor": "#BADA55", "padding": "10px", "fontSize": "16px" }

const cssStringVendorAndCustom = `
  -webkit-transition: all 4s ease;
  color: red;
  --my-custom-prop: value;
`;
const jsObjectReactCompat = parse(cssStringVendorAndCustom, { reactCompat: true });
console.log('Parsed CSS with reactCompat option:', jsObjectReactCompat);
// Expected: { "WebkitTransition": "all 4s ease", "color": "red", "--my-custom-prop": "value" }

// Demonstrating handling of invalid declarations (missing values are removed)
const invalidCss = 'margin-top: ; display: block; top;';
const resultInvalid = parse(invalidCss);
console.log('Parsed CSS with invalid declarations removed:', resultInvalid);
// Expected: { "display": "block" }

view raw JSON →