.less 和 .module.less 文件。
什么场景适合用 Less
- 你在迁移一个基于 Less 的现有 web 代码库。
- 你希望以较低的迁移成本获得变量与嵌套写法。
- 你需要模块作用域的样式,同时又想保留 Less 的写法约定。
模板示例
new-less

在现有扩展中使用
按下面的步骤把 Less 添加到现有扩展。安装
安装所需依赖:在 HTML 文件中的用法
在扩展页面(popup/options/新标签页)里,通过脚本入口引入 Less:在 content_script 文件中
在浏览器扩展中使用 Less 模块
像 CSS 模块一样,用 Less 模块把类名限定在本地作用域。这能默认避免全局样式冲突——这一点对扩展尤其重要,因为 content script 运行在宿主页面的 CSS 作用域内。content-less-modules

在现有扩展中使用 Less 模块
要启用 Less 模块,把.less 文件重命名为 .module.less。这会自动开启类名的本地作用域。
用法示例
重命名 Less 文件后,你可以在脚本中导入它:React/Preact 用法示例
在 React 或 Preact 中,导入 Less 模块并像在其他组件里一样应用样式:Vue 用法示例
在 Vue 中,优先在单文件组件(SFC)样式中使用lang="less" 加 module:
Svelte 用法示例
在 Svelte 中,导入 Less 模块映射并应用类名:行为说明
- 在扩展页面上下文里,
.module.less会按预期导出类名映射。 - 在 content script 中,Extension.js 会把样式作为 CSS 资源输出,并以样式表的方式注入页面。
- 如果没有安装
less包,Extension.js 会给出警告,并把原始的 Less 源码原样拷贝进输出的 CSS,因此在你自己安装它之前,这些界面会以无样式的形态渲染。
关于 less 的安装后警告
在某些包管理器下,安装一个使用 Less 的项目时可能会出现提示,说 less 的构建脚本没有被执行(pnpm 会打印
Ignored build scripts: less,并请你批准它们)。这是预期之中的,可以安全忽略。
Extension.js 通过自己的打包管线编译 Less,因此并不依赖 Less 那个可选的安装后步骤(它只是在 Less 自己的
仓库里配置 Playwright,对使用者来说什么也不做)。无论哪种情况,你的 .less 与 .module.less 文件的
构建和热重载都完全一样。
脚手架生成的项目不会带上 pnpm.ignoredBuiltDependencies 键,所以用 pnpm 安装一个 Less 模板时,会像
其他项目一样显示这条提示。npm 与 yarn 默认会运行该脚本,什么也不打印。
如果你遇到了这条提示,有两种等价的方式让它安静下来:
- 跳过它(推荐):在你的
package.json中加上pnpm.ignoredBuiltDependencies: ["less"]。 这相当于确认了这个脚本,但不去运行这个空操作。 - 运行它:执行
pnpm approve-builds并选择less,或者加上pnpm.onlyBuiltDependencies: ["less"]。无害,只是没有必要。

