Skip to content

Releases: less/less.js

v4.0.0

18 Dec 18:22
Compare
Choose a tag to compare

This release has 2 breaking changes:

Parentheses required for mixin calls

This aligns it with syntax for calling detached rulesets.

Example

.mixin() {}
.mixin;  // error in 4.0

Parens-division now the default math setting

Parentheses are required (by default) around division-like expressions, to force math evaluation.

Example:

@ratio_large: 16;
@ratio_small: 9;

/** The following will produce `device-aspect-ratio: 1.77777778` by default in 3.x */
@media all and (device-aspect-ratio: @ratio_large / @ratio_small) {
   .body { max-width: 800px; }
}

Produces:

@media all and (device-aspect-ratio: 16 / 9) {
  .body {
    max-width: 800px;
  }
}

You can, of course, get old math behavior. See: http://lesscss.org/usage/#less-options-math

What's New

  • min() / max() functions can pass-through if it cannot be evaluated in Less
  • isdefined() can be used to test if variables are defined (e.g. isdefined(@unknown))
  • New rgb color syntax supported (e.g. rgb(0 128 255 / 50%))

v2.7.2

24 Apr 13:06
Compare
Choose a tag to compare

2.5.1

21 May 11:28
Compare
Choose a tag to compare
  • Fix problems with less being async in some browsers
  • Minor fix only likely to affect programmatic usage of ruleset find
  • Fix error when a namespaced mixin is invoked in global scope

2.5.0

21 May 11:29
Compare
Choose a tag to compare
  • supports the scoped @plugin directive to load function plugins
  • All directives are bubbled (e.g. supports), not just media
  • Performance improvements to the parser - should help non-chrome browsers with very large less files to be a lot quicker.
  • the image size function respects include paths like other file functions
  • colour functions take a relative argument that applies percentages relatively instead of absolutely
  • include paths now allows : as a separator on windows (recognising and not splitting drive names by the backslash)
  • @import (css) does not pull the directive above comments
  • Fix for import statements without quotes sometimes causing issues
  • replace supports dimensions and colours
  • the browser field is set in the package.json for use with browserify
  • another fix to support paths being passed as a string instead of an array
  • detached rulesets can be used as default arguments
  • Fix a lot of false warnings about extends
  • errors written to stderr more consistently
  • consistently keep units if strict units is off
  • Better support for comments in function all arguments

2.4.0

21 May 11:29
Compare
Choose a tag to compare
  • Support for plugins that pre-process (to add libraries silently etc.)
  • Empty sourcemaps now work
  • Extract and Length functions now ignore comments in a list (more work to come to fix the general problem)
  • fragment urls are treated absolute since they refer to the html document
  • Extends on a selector joined with & now work better
  • Nested mixins work better with !important (regression in 2.3.0)
  • The promise dependency is now actually optional (introduced in 2.0.0)
  • Files with just \r newlines now process ok (regression in 2.0.0)
  • When strict units is off and the unit is 1/x, (e.g. 1 / 12px) the unit output is x, previously nothing (regression in 2.0.0)

v2.3.1

28 Jan 17:33
Compare
Choose a tag to compare
  • Fix depends option (regression in 2.3.0)
  • Support parent selector (&) used in sub element expression (e.g. :not(.c_&))

v2.3.0

28 Jan 17:33
Compare
Choose a tag to compare
  • add isruleset function
  • add optional import option, causing less to not fail if file not found
  • Fix browsers-side cache.
  • Many fixes to import reference - support @support and keyframe
  • Selectors now interpolate pseudo selectors (e.g. :@{hover})
  • Fix comments missed off if they were at the end of the file
  • Fix !important used with parametric mixins
  • Emits warnings for extends when the target is not found
  • include-path now works on data-uri
  • variables and function calls work for path in data-uri
  • Fix absolute paths not working on imports sometimes.
  • Unicode BOM removed again
  • Misc. bug fixes

v2.2.0

04 Jan 11:52
Compare
Choose a tag to compare
  • do not apply relative paths to svg-gradient and data-uri functions data-uri output
  • using import filename interpolation and import inline together now works
  • deprecate the compression option (still works, but outputs a warning unless silent)
  • The node version of less now has image-size, image-width, image-height which return the image dimensions of a file
  • Fixed an issue that could cause the parse to occur more than once and the callback be called multiple times
  • if you are outputting to the console, lessc defaults to silent so warnings do not end up in output
  • isunit function supports '' to test if a dimension has no unit
  • data-uri function now counts characters after base64 encoding instead of bytes before encoding to determine ie8 support
  • fix bug effecting guards on pseudo class selectors
  • do not cache on the browser when used with modifyVars
  • detection if less does not parse last character in file
  • detection of whether a file is css now requires /css, .css, ?css, &css instead of just css. You can still tell less the type of file using import options.
  • remove extra new line added to sourcemap entry inline file
  • support safari extension
  • less.parse now exposes a way to get the AST. We do not recommend you use this unless you need to.

v2.1.2

04 Jan 11:50
Compare
Choose a tag to compare
  • Fix for use with requirejs
  • Fixes for data-uri function

v2.1.1

04 Jan 11:50
Compare
Choose a tag to compare
  • Improved keyword and anonymous usage with the replace function
  • Added getCSSAppendage to sourcemap builder to avoid duplication in plugins
  • Fix problem with plugins when used with the promises version of render
  • If the render callback throws an exception it now propogates instead of calling the callback again with an error