Module: LightningCSS

Defined in:
lib/lightningcss.rb,
lib/lightningcss/errors.rb,
lib/lightningcss/result.rb,
lib/lightningcss/backend.rb,
lib/lightningcss/options.rb,
lib/lightningcss/version.rb,
lib/lightningcss/transformer.rb,
sig/lightningcss.rbs,
sig/lightningcss/types.rbs,
sig/lightningcss/errors.rbs,
sig/lightningcss/result.rbs,
sig/lightningcss/backend.rbs,
sig/lightningcss/options.rbs,
sig/lightningcss/version.rbs,
sig/lightningcss/transformer.rbs,
ext/lightningcss/lightningcss.c

Overview

Ruby bindings for Lightning CSS.

LightningCSS.transform(".a { color: red }", minify: true).code
#=> ".a{color:red}"

Every option is passed through to Lightning CSS as written, except scope, which narrows each rule by a selector fragment so a stylesheet only applies where that fragment matches:

LightningCSS.transform(".title { color: red }", scope: "[data-scope-abc]").code
#=> ".title[data-scope-abc]{color:red}"

LightningCSS::Options is what the options are read by, and LightningCSS::Transformer holds a set of them to reuse across many stylesheets.

Defined Under Namespace

Modules: Backend Classes: BundleError, Error, OptionError, Options, ParseError, Result, Transformer

Constant Summary collapse

VERSION =

Returns:

  • (::String)
"0.1.1"

Class Method Summary collapse

Class Method Details

.bundle(path, **options) ⇒ LightningCSS::Result

: (String, ?filename: String?, ?minify: bool, ?error_recovery: bool, ?targets: browsers?, ?css_modules: css_modules?, ?scope: String?) -> LightningCSS::Result

Parameters:

  • (String)
  • filename: (String, nil)
  • minify: (Boolean)
  • error_recovery: (Boolean)
  • targets: (browsers, nil)
  • css_modules: (css_modules, nil)
  • scope: (String, nil)

Returns:



40
41
42
# File 'lib/lightningcss.rb', line 40

def self.bundle(path, **options)
  Result.from_json(Backend.bundle(path.to_s, Options.serialize(options)))
end

.lightningcss_versionString

: () -> String

Returns:

  • (String)


57
58
59
# File 'lib/lightningcss.rb', line 57

def self.lightningcss_version
  Backend.lightningcss_version
end

.minify(code) ⇒ String

: (String, ?filename: String?, ?error_recovery: bool, ?targets: browsers?, ?css_modules: css_modules?, ?scope: String?) -> String

Parameters:

  • (String)
  • filename: (String, nil)
  • error_recovery: (Boolean)
  • targets: (browsers, nil)
  • css_modules: (css_modules, nil)
  • scope: (String, nil)

Returns:

  • (String)


52
53
54
# File 'lib/lightningcss.rb', line 52

def self.minify(code, **)
  transform(code, **, minify: true).code
end

.transform(code, **options) ⇒ LightningCSS::Result

: (String, ?filename: String?, ?minify: bool, ?error_recovery: bool, ?targets: browsers?, ?css_modules: css_modules?, ?scope: String?) -> LightningCSS::Result

Parameters:

  • (String)
  • filename: (String, nil)
  • minify: (Boolean)
  • error_recovery: (Boolean)
  • targets: (browsers, nil)
  • css_modules: (css_modules, nil)
  • scope: (String, nil)

Returns:



35
36
37
# File 'lib/lightningcss.rb', line 35

def self.transform(code, **options)
  Result.from_json(Backend.transform(code.to_s, Options.serialize(options)))
end

.transform_style_attribute(code, **options) ⇒ LightningCSS::Result

: (String, ?filename: String?, ?minify: bool, ?error_recovery: bool, ?targets: browsers?) -> LightningCSS::Result

Parameters:

  • (String)
  • filename: (String, nil)
  • minify: (Boolean)
  • error_recovery: (Boolean)
  • targets: (browsers, nil)

Returns:



45
46
47
48
49
# File 'lib/lightningcss.rb', line 45

def self.transform_style_attribute(code, **options)
  serialized = Options.serialize(options, allowed: Options::STYLE_ATTRIBUTE, subject: "a style attribute")

  Result.from_json(Backend.transform_style_attribute(code.to_s, serialized))
end