* feat: migrate to native ESM with no build step
- Rename src/ to lib/ — source files are shipped directly, no compilation
- Add "type": "module" to package.json for native ESM support (Node 18+)
- Convert bin/lessc, test files, and build scripts from CJS to ESM
- Rename Gruntfile.js and .eslintrc.js to .cjs (must remain CommonJS)
- Add .js extensions to all relative import paths for ESM resolution
- Use createRequire() for optional dependency resolution (npm packages, JSON)
- Configure TypeScript for check-only mode (noEmit: true, allowJs: true)
- Update Rollup config to read from lib/ directly
- Update CI matrix to drop Node 16 (minimum Node 18+)
- Browser build is smaller: 500KB (was 509KB), minified 153KB (was 158KB)
- All 139 tests pass
* chore: fix trailing semicolons from linter
* chore: gitignore generated .css.map files in lib/
* fix(ci): restore lts/-3 to test matrix
* chore: stop tracking dist/ build artifacts
Generated browser bundles don't need to be in source control — they're
built during publish and included in the npm package via the files field.
Removes duplicate copies from both root dist/ and packages/less/dist/.
* fix(ci): use pnpm exec for playwright install
npx doesn't reliably find binaries with pnpm. Since playwright is
already a devDependency, use pnpm exec to run the installed version.
* fix(ci): use pnpm --filter for playwright, disable fail-fast
pnpm exec at workspace root can't find playwright binary since it's a
devDependency of the less package. Use --filter to run in that context.
Also disable fail-fast so all matrix jobs complete independently.
* fix(ci): move playwright to root devDependencies
Makes pnpm exec playwright work from workspace root in CI.
* fix: upgrade copy-anything to v3 for ESM compat, fix Windows test paths
copy-anything v2 lacks "type": "module", causing named import failures
on Node 18. v3 has proper ESM exports.
Revert testFolder to absolute path (matching original behavior) so debug
test path replacements match Less compiler output on Windows.
* chore: add CodeRabbit config to raise file review limit
* fix: add files field to package.json, remove postinstall from published package
Restricts npm package to only bin/, lib/, dist/, index.js, and README.md.
Previously shipped test files, Gruntfile, eslint config, etc.
Removes postinstall script (Playwright browser install) which only applies
in the monorepo dev environment and fails when installed from npm.
Verified: npm pack --dry-run shows 120 files (was 229), lessc CLI and
API both work from a clean tarball install.
* Added deprecation warnings
* Remove warning about combinator
* Switch to PNPM
* Update local dependencies
* Remove inner dist folder
* Create symbolic link to dist folder
* Flip dist folders
* Create symbolic link in root
* Add contributors
* 👥 Add @matthew-dean as a contributor
* 👥 Add @cloudhead as a contributor
* 👥 Add @lukeapage as a contributor
* 👥 Add @seven-phases-max as a contributor
* 👥 Add @iChenLei as a contributor
* 👥 Add @puckowski as a contributor
* Add more contributors
* Finish deprecation warnings
* Resolve deletions and such
* Fix symbolic link
* Update ci.yml to use PNPM
* Update ci.yml to use PNPM
* Refine CI versions
* Fix node printed version
* Better fix for #4258 and #4292
* Re-enable other tests
* fix(issue:4211) parse entities for comma list
parse the correct entities for a comma separated list so that all URLs are
rewritten correctly.
* fix(issue #4235) style must not have space
fixes issue #4235 where container query style would have invalid space
after keyword
* fix(issue:3766) add support for container queries
* Add support for CSS Container Queries
* Add tests for CSS Container Queries
* feat(media-queries-level-4) update media query
* Add support for Media Queries Level 4.
* Add tests for Media Queries Level 4.
* fix(mq-4 regex) fix regex for media queries
* Fix regex used for Media Queries Level 4 syntax parsing.
* fix(media-query-syntax) fix parsing of invalid CSS
* Fix parsing of invalid CSS for media queries to be consistent with
Less.js version 4.1.3 handling.
* Remove math=strict-legacy, set default=parens-division
* Support for comma-less color functions
* Require parens after mixin call
* Output invalid JS functions in CSS
* Escape parens and revert pass-through function errors
* Remove ieCompat option
* Remove non-performant class pattern
* Add isdefined() function