ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Less.js 版本演进与 4.x 变更日志深度解读:从 v4.8.0 回溯核心特性与弃用路线

Less.js 版本演进与 4.x 变更日志深度解读:从 v4.8.0 回溯核心特性与弃用路线 前端开发工具【免费下载链接】less.jsLess. The dynamic stylesheet language.项目地址https://gitcode.com/gh_mirrors/le/less.js点击查看免费下载本篇技术指南以仓库根目录 CHANGELOG.md覆盖 v1.3.0 至 v4.8.0 的完整版本记录为骨架结合 packages/less/lib/less 源码与测试数据系统梳理 Less.js 十余年来的关键特性、修复方向与弃用规划。读完你将掌握Less.js 4.x 各版本新增的现代 CSS 能力容器查询、layer、starting-style、内置弃用警告体系的运作机制、Less 5.x 的破坏性变更预告以及从 v3 到 v4 的架构现代化脉络ESM、ES6 Class、JSDoc。一、版本脉络总览从 2011 到 2026CHANGELOG.md 完整记录了 Less.js 的发布历史版本主线可概括为四个阶段阶段版本区间时间跨度主线主题v1.x1.3.0 → 1.7.52011–2014语言核心能力奠基named arguments、:extend、detached rulesets、媒体查询冒泡v2.x2.0.0 → 2.7.32014–2017Promise 化重构、导入系统与源码映射完善、CLI 打磨v3.x3.0.0-RC → 3.13.12018–2020ES6 化与 TS 类型检查、math modes、each()/range()、namespaced values、rewrite urlsv4.x4.0.0 → 4.8.02020–2026容器查询等现代 CSS 支持、原生 ESM 无构建步骤、弃用警告体系、基准测试基础设施其中 v4.8.02026-07-22是当前最新版本与仓库根 package.json 中声明的version: 4.8.0一致。二、最新版本 v4.8.0修复收尾与 5.x 弃用预告v4.8.0 聚焦两类工作mixin 调用问题的修复以及面向 Less 5.x 的弃用预告。修复项mixin 调用修复对应 issue #4234解决了特定场景下 mixin 调用的解析/求值错误此类问题通常涉及参数匹配或调用上下文。boolean()解析修复修正了内联条件表达式之间进行比较时的boolean()解析行为例如多个条件表达式组合为比较操作数的写法。弃用预告为 Less 5.x 移除做准备v4.8.0 一次性预告了四类将在 Less 5.x 中移除的写法Less 4.x 保持既有输出但发出警告数字开头的变量名如123var需迁移为合法标识符纯横线变量名-与{-}纯横线 mixin 名.-()与#-()动态charset插值应改用静态带引号的charset utf-8;声明。这些弃用项已写入源码中的弃用注册表见 deprecation.jsnumeric-variable-name、dash-only-variable-name、dash-only-mixin-name、dynamic-charset各有独立 ID 与描述文本。三、v4.7.0at-rule 裸变量弃用与容器 style() 查询v4.7.02026-07-18是 v4.8.0 的直接前身包含三项值得关注的变更弃用非值位置的 at-rule 裸variablePR #4462 正式弃用在非值位置的 at-rule 前导prelude中直接书写裸variable的写法。典型反例是media foo或supports feature这类将变量直接嵌入 at-rule 条件位置的做法应改用{variable}插值语法。源码中对应注册项为variable-in-at-rule-prelude: { description: A bare variable in an at-rule prelude (e.g. media foo) is deprecated. Use {variable} interpolation instead. },见 deprecation.js。PR #4469 进一步迁移了剩余的var测试固件并对前导裸变量扫描逻辑做了 DRY 重构同时补充了警告覆盖率测试。修复容器 style() 查询的比较/范围语法PR #4461 修复 issue #4460容器查询container style(...)中比较与范围语法如style(--x 100px)的解析。这与 v4.2.0 引入的容器查询能力一脉相承见下文第五节。工程维护PR #4459抽取共享 ESLint 配置并新增 lint 脚本仓库根 package.json 中的lint/lint:fix脚本对应此工作共享配置位于 config/eslint/base.cjsPR #4456用probe-image-size替换旧的image-size依赖用于图片尺寸探测涉及data-uri等函数。四、v4.6.x 系列容器查询完善、浏览器构建修复与架构现代化v4.6.x 是近期最活跃的补丁线从 4.6.0 到 4.6.7 共 8 个版本可归纳为三条主线。1. v4.6.0架构现代化的里程碑v4.6.02026-03-09集中引入了多项深度重构是理解 Less.js 4.x 源码组织方式的关键版本原生 ESM 迁移无构建步骤所有源码改用原生 ESM 模块仓库不再依赖打包构建才能产出库文件。源码中随处可见export/import语句即可佐证例如 deprecation.js 末尾的export { deprecations, DeprecationHandler, MAX_REPETITIONS }Prototype 树节点全部转为 ES6 Classpackages/less/lib/less/tree下的节点文件如 container.js、atrule.js均已采用class语法全量 JSDoc 类型注解所有 tree 节点文件头部均有// ts-check与typedef/param注解container.js 即为典型示例热路径优化与基准测试基础设施修复仓库 packages/less/benchmark 目录下的index.js、benchmark-runner.js及results/latest目录即该工作的产出容器查询相关代码质量清理#4409。同期修复还包括选择器this绑定、at-rule 父子关系、mixin 调用错误传播、容器/媒体查询functionRegistry守卫#4414逗号分隔伪选择器列表中父选择器解析#4408修 issue #4358declarationCall解析排除 CSS at-rule 关键字#4407修 issue #4331未知 at-rule 表达式的逗号处理#4389修 issue #4354Ruleset/ToCSSVisitor的no-prototype-builtins问题#4404import 子路径模块 bug#4236expression.genCSS()重复长度检查#4327等。2. 容器查询与 supports 的修复接力v4.6.1/v4.6.2CJS 兼容性修复与 ESM 测试#4417发布脚本跳过 squash merge 中的过期版本标记#4418。v4.6.3webpack 浏览器构建修复——改用 UMD 格式的dist/less.js并补充 CJS bundle#4424。v4.6.4为:is()/:matches()/:where()内嵌套:has()选择器及逗号分隔列表补充测试覆盖#4422。v4.6.5浏览器导出互操作修复——将 bundler 路由到 CJS 类型的 UMD 产物#4444媒体查询中括号解析#4427无括号not关键字在条件中被静默忽略的修复#4421make-dir升级到 v4 修复安全漏洞#4426。v4.6.6嵌套supports搭配dumpLineNumbers时的 TypeError 修复#4446保留容器 feature 函数的空格#4441from表达式内的颜色 calc#4434修 issue #4316。v4.6.7CI 修复#4457与常规发布#4451。3. 发布与工程流程自动化v4.6.5 起维护工作明显转向流程自动化CHANGELOG 生成自动化#4447、copilot-review CI 任务与 Playwright Chromium 安装修复#4448/#4445、alpha 分支 PR-based 发布流#4431、npm publish 始终以 GitHub tag/release/版本提交为背书#4430、packageManager更新为pnpm9.15.9以匹配 lockfileVersion 9.0#4432、containermixin 参数变量解析回归测试#4420。五、现代 CSS 特性支持路线容器查询、layer、starting-style这是 4.x 阶段最有价值的功能主线CHANGELOG 中有清晰的演进轨迹容器查询Container Queriesv4.2.0PR #3811 基于 CSS Containment Level 3W3C CSS Containment Module Level 3为 Less 引入容器查询支持。解析后生成container树节点其核心实现在 container.jsgenCSS(context, output) { output.add(container , this._fileInfo, this._index); this.features.genCSS(context, output); this.outputRuleset(context, output, this.rules); }Container类继承自AtRule构造时用空的Selector创建 ruleset 容器并允许导入allowImports true见 container.js。配套测试位于 packages/less/test-data/tests-unit/container包含container.less输入与container.css期望输出。容器查询在后续版本持续打磨v4.2.1修复容器 style 查询多出空格的问题#4237issue #4235v4.2.2修复通过 mixin 创建的容器查询变量求值错误#4295issue #4252v4.4.1新增CSS 滚动状态容器查询scroll-state支持#4342如container scroll-state(scrollable: top)v4.6.0容器查询代码质量清理#4409与变量名修复#4402v4.6.6保留容器 feature 函数空格#4441v4.7.0修复 style() 查询中的比较/范围语法#4461。layer 级联层v4.4.0PR #4337 新增layerat-rule 支持PR #4340 补充了import ... layer(...)的层功能。解析器在 parser.js 中为layer建立了专门的解析分支。v4.4.1 又修复了layer嵌套语法的解析问题#4348issue #4348。starting-stylev4.3.0PR #4333 为 Less 增加starting-styleat-rule 支持CSS 进入/退出过渡的起始样式声明解析分支同样位于 parser.js。六、弃用警告体系Less 5.x 的清晰路线图v4.3.0#4319首次将弃用警告写入 Less 编译输出并新增 quiet 标志v4.6.0#4402又为 Less 5.x 将移除的特性补充了一批警告。这套机制的源码实现集中在 deprecation.js唯一 ID 注册表每种弃用行为有一个稳定 ID 与人类可读描述见 deprecation.js重复次数限制每种弃用类型单次解析内最多警告 5 次MAX_REPETITIONS 5超出部分在解析结束时汇总输出N repetitive ... deprecation warning(s) omitted.见DeprecationHandler的shouldWarn/summarizedeprecation.js静默开关--quiet-deprecations浏览器端对应 render 选项可抑制全部弃用警告。截至 v4.8.0注册表中的全部弃用项如下弃用 ID内容处置mixin-call-no-parens无括号调用 mixin弃用mixin-call-whitespacemixin 名与括号之间留空格弃用dot-slash-operator./运算符弃用variable-in-unknown-value自定义属性值中的variable视为字面文本行为变更variable-in-at-rule-preludeat-rule 前导中的裸variable改用{variable}numeric-variable-name数字开头的变量名Less 5.x 移除dash-only-variable-name-与{-}Less 5.x 移除dash-only-mixin-name.-()与#-()Less 5.x 移除dynamic-charset动态charset插值Less 5.x 移除property-in-unknown-value自定义属性值中的$property视为字面文本行为变更js-eval反引号内联 JavaScript 求值Less 5.x 移除at-pluginplugin指令Less 5.x 重构替换dump-line-numbersdumpLineNumbers选项Less 5.x 移除math-always--mathalwaysLess 5.x 移除对charset的定位还可从源码验证atrule.js 通过isCharset()判断charset空规则集相关的输出逻辑会据此处理。七、v3.x 的功能主线数学模式、列表函数与命名空间值v3.x 是语言能力大扩张的阶段多数今日常用语法源自此时数学模式v3.7.0PR #3274 新增两个数学模式并弃用strictMathissue #1880。此后编译可通过--math指定always、parens-division、strict等模式对应测试目录 packages/less/test-data/tests-config/math 下细分了 always/parens-division/strict 三套配置另有 math-always、math-parens-division、math-strict 专项用例。注意 v4.x 已预告--mathalways将在 5.x 移除见上表。列表函数each()v3.7.0#3263遍历列表/映射生成规则修复工作持续到 v3.9.0#3333range()v3.9.0#3334生成数值序列。Namespaced valuesv3.5.0PR #3242 引入命名空间值如#config.colors.primary并修复其在媒体查询与 mixin 参数中的解析#3254配套示例见 v3.5.0-beta.5 的 breakpoints 用例。其他重要能力v3.6.0移除boolean/if函数的双括号问题#3259svg-gradient()在 Firefox 下的修复#3261issue #2791v3.8.0rewriteUrls功能#3248对应测试目录 packages/less/test-data/tests-config/rewrite-urls-all 与 rewrite-urls-localv3.9.0range()v3.10.0-betaLess 全面转 ES6 并引入 TypeScript 类型检查支持#3411v3.11.0支持文件名含点的 import#3453v3.12.0函数参数的条件求值#3532issue #3371、测试数据模块化#3525v3.13.0内存/运行时改进#3572issue #3434。八、v2.x 与 v1.x 的奠基性工作v2.xPromise 化与导入系统v2.0.0整体 Promise 化重构#2021、解析器/错误处理重构#2022、根目录 require 目标#2277v2.5.0导入插件机制#2479、图像尺寸支持#2526、plugin作用域修复#2522v2.6.0guard 中支持or关键字与任意逻辑表达式#2763、and优先级高于or#2779v2.7.x--depends生成依赖列表#2830、sourcemap 内联修复#2988。v1.x语言核心v1.3.0命名参数#268、media冒泡/嵌套/合并#634、percentage函数#527、CommonJS/AMD 模块支持#479v1.5.0:extend、length/extract#1542、支持自定义变量传入#1655v1.6.0CSS Guards 的default()错误处理#1757、插值选择器 mixin#1624v1.7.0detached rulesets#1859、replace函数#1855、_属性合并#1847、部分 at-rule 支持变量#1860。九、工程质量与验证路径除功能外CHANGELOG 还记录了持续投入的工程质量工作读者可据此在本仓库直接验证测试数据合法化v4.4.2 将测试数据迁移为合法 CSS#4357配套测试框架位于 packages/less/test基准测试v4.6.0 修复 benchmark 基础设施#4410可运行 packages/less/benchmark/index.js 复现性能数据结果归档于benchmark/results/latest浏览器测试Playwright 驱动v4.6.5 修复安装问题用例在 packages/less/test/browser发布流程CHANGELOG 自动生成#4447、PR-based 发布#4431、版本提交与 tag 一致性校验#4430包管理仓库使用 pnpmpackageManager: pnpm9.15.9根 package.json 的postinstall通过only-allow pnpm强制统一。本地验证方式在仓库根目录执行npm install或 pnpm 安装后运行npm test进入 packages/less 执行完整测试套件运行npm run lint使用 config/eslint/base.cjs 的共享配置做静态检查。十、升级与迁移建议基于 CHANGELOG 的弃用路线从 v3/v4 早期版本升级时建议立即处理 5.x 移除项将数字开头/纯横线的变量与 mixin 名改名为合法标识符将动态charset插值改为静态带引号声明--mathalways改为--mathparens-division或strict规避已弃用写法mixin 调用带括号、at-rule 前导用{variable}插值、避免反引号 JS 求值与plugin关注行为变更自定义属性值中的variable/$property已按字面文本处理变量插值请显式使用{variable}/{$property}形式升级到最新 4.xv4.8.0 汇集了容器查询、layer、starting-style、scroll-state等现代 CSS 支持以及浏览器/CJS/ESM 互操作修复是 4.x 时代最稳妥的基线。总结Less.js 的 CHANGELOG 不仅是一部发布记录更是理解其技术决策的路线图——从 v3 的语言能力扩张、到 v4 的现代 CSS 特性支持与架构现代化、再到面向 5.x 的弃用清理每一步都能在仓库源码parser、tree、deprecation.js与测试数据中找到对应实现。结合本指南与源码阅读可以准确评估升级风险并充分利用 Less 4.x 的全部能力。赞分享前端开发工具【免费下载链接】less.jsLess. The dynamic stylesheet language.项目地址https://gitcode.com/gh_mirrors/le/less.js点击查看免费下载相关推荐gqlgen 变更日志深度解读从 v0.17.50 回溯 v0.4.x 的版本演进路线图gqlgen 变更日志深度解读从 v0.17.50 回溯 v0.4.x 的版本演进路线图 本文以仓库根目录 CHANGELOG.md https://link后端GraphQL代码生成Phoenix 变更日志深度解读从 v20.15 回溯 2026读懂 Arize Phoenix 的演进主线与升级路径Phoenix 变更日志深度解读从 v20.15 回溯 2026读懂 Arize Phoenix 的演进主线与升级路径 本文以仓库根目录下的 CHANGEL可观测性AI 评测LLMOpsAI 应用人工智能eggjs/tegg-runtime 变更日志深度解读从 3.x 到 4.x 的运行时演进与核心机制eggjs/tegg runtime 变更日志深度解读从 3.x 到 4.x 的运行时演进与核心机制 eggjs/tegg runtime 是 tegg后端Web框架上一篇Rust AI应用开发新选择5个场景带你快速上手Rig框架下一篇Next.js订阅支付应用移动端打包5步实现TWA完整方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表