我有一个相当大的代码库,其中包含多个共享公共sass模块的项目。
我还为每个运行多个任务的模块设置了相当复杂的gulpfiles。
我遇到的一个问题是,在更新单个共享sass模块时,是否能够在多个项目上运行sass任务。
例如:
Project 1 file.scss
@import "shared-child.scss"
Project 2 file.scss
@import "shared-child.scss"
Project 3 file.scss
@import "shared-child.scss"
这种情况经常发生。当我更新shared-child.scss
时,我希望所有包含shared-child.scss
的项目文件都重新编译。
因此,当我在shared-child.scss
上运行gulp sass任务时,它将依次知道它在各个项目(即项目1、项目2、项目3)中的位置,并运行相应的gulp任务以包含对shared-child.scss
所做的更改。
在正确的情况下,我将父文件放在了gulp项目中。观察所有包含的文件是否有变化,但问题是,更新子文件并重新编译父文件。
如能提供关于如何做到这一点的任何资料,将不胜感激。
2条答案
按热度按时间gmol16391#
不完全是你想要的,但我用它来避免partials/include/children被单独解析。
您应该监视所有文件,包括部分文件,以便在它们发生更改时也触发任务。
文件名开头或包含文件夹名称的
_
可识别部分。这样做的唯一缺点是,当 * 任何 * SCSS文件更改时,* 所有 * 非部分文件都将呈现。
作为旁注:我完全按照你的要求做了,但是对于Jade(html模板语言),使用了一个插件来计算依赖树/图。所以 * 这是 * 可能的,如果有人找到一种方法来为SASS文件构建依赖树
watbbzwu2#
可以使用
gulp-dependents
或gulp-sass-parent
来完成。第一个应该更好,因为它允许在scss中配置和处理@use或@forward规则。