【发布时间】:2021-07-20 18:46:35
【问题描述】:
因此,目前在我的 gulp 设置中,我生成了许多 CSS 文件 - 一个通用的“核心”文件,然后是特定于模板的样式表。
它不是在每次更改时重新编译所有样式表,而是只编译所需的样式表 - 但这会导致复杂的“监视”路径,涵盖许多文件,这些文件仅反映每个模板的主要 SCSS 文件中的内容(包括@use/@import 语句)。
然后我突然想到,与其写出所有的监视文件路径,我只是简单地“抓取”SCSS 文件并递归地抓取任何@use/@import 语句的所有文件路径,这不是很好吗。
举个例子,假设我有这个“blog.scss”文件:
// Variables
@import 'variables';
// Tools
@import './tools';
// Parts
@import './core/base';
@import './templates/blog';
是否可以为其@import 语句获取所有文件路径,例如:
'local-dev/styles/variables.scss'
'local-dev/styles/tools.scss'
'local-dev/styles/core/base.scss'
'local-dev/styles/templates/blog.scss'
我考虑过简单地将文件作为字符串检索,并使用一些正则表达式 - 但这不会考虑文件扩展名 (.scss/.css/_partials.scss) 并且可能会有其他问题。
有什么想法吗?
提前致谢。
【问题讨论】:
-
嗨 ;) 我理解正确吗 - 您只想以交互方式构建已更改的文件,而不是解析>编译>构建保持不变的文件?
-
@ve1ikiy 在某种意义上是的。目前,我的设置有 7 个样式表,用于各种不同的模板——而不是查看整个文件夹,并且每次我执行特定的监视命令时都重新创建所有 7 个样式表——但事实证明,维护起来很痛苦。添加了新的 SCSS 导入。有没有更好的方法来处理这个问题?
-
是的,在 gulp 的 v4 中有新的 API 调用 -> lastRun 这有助于创建仅在与之前的运行有一些差异时才会执行的函数。我将在下面的答案中更详细地描述它。