【发布时间】:2018-11-01 14:05:29
【问题描述】:
背景:我有一个包含 Angular(5.0.0,Dart 2.0.0)组件(我们称之为 my_components)的包,我在许多客户项目(app_1、app_2、...)。这些应用程序必须覆盖我必须反映客户企业身份的几乎每个组件的一些 CSS 属性(例如颜色)。这里显而易见的选择是将值定义为 app_n 包中 _variables.scss 文件中的 SASS 变量。 (我不能使用CSS自定义属性,因为需要IE支持(我知道Angular官方不支持IE))这里的问题是组件scss文件必须导入_variables.scss文件,所以my_components em> 需要对 app_n 的依赖,这是不可能的。
我尝试通过以下方式解决此问题:在 my_components 我有一个文件 lib/_variable.default.scss。组件 scss 文件仍包含行 @import package:my_components/_variables.scss。我写了一个InjectAssetsBuilder,它在 .default.scss 文件扩展名上运行并生成 .scss 文件。该构建器是可配置的,并且需要在 app_n 的 build.yaml 配置中映射 'my_components|lib/_variables.scss': 'app_n|web/variables.scss'。
构建器应该由 .default.scss 文件触发,然后将自定义文件放在它旁边,以便可以通过组件导入找到。
但是,我无法让它工作。如果我将auto_apply 设置为all_packages(在my_components 的构建器定义中),构建器不会收到映射配置(来自app_n 中的构建目标部分)。如果我将auto_apply 设置为none,则构建器不再将my_components 作为输入,因此它无法看到并被.default.scss 文件触发。
如果有人曾经解决过类似的问题(或者对 app_n 如何将 SASS 变量注入 my_components 依赖项有其他想法),我很想听听他们的意见想法。否则,如果有人能向我解释构建配置的范围,我将不胜感激:
- 为什么
auto_apply: all_packagesbuilder 看不到 app_n 中的配置? - 为什么 app_n 中目标定义的构建器无法查看 my_components 中的资产?
如果您认为我的配置有误,我可以尝试提取一个最小示例。
【问题讨论】:
标签: dart angular-dart dart-build