css - 如何在不复制库的情况下在 Angular 组件的 CSS 中使用第三方 CSS 库?

标签 css angular typescript sass

我有两个组件都依赖于 hover.css 的效果。这两个组件都有 SASS 文件(简化)如下所示:

@import '~hover.css/scss/hover';

.some-class a {
  @include underline-from-left;
}

此外,我在 style.css 的全局样式中包含了 hover.css 库:

@import '~hover.css/scss/hover';

.some-global-class {
  @include some-other-mixin-from-hover;
}

这一切都工作正常并且编译正常,除了相当大的美中不足,我最终在我编译的应用程序中得到完整的 hover.css 三次 - 一次在 styles.js main.js 中的两次(每个组件一次)。这显然不是一个可持续的模式。

如果我不在我的组件中使用 @import hover.css,Angular 将不会编译它们,因为它们引用了一个无法找到的 mixin。我已经尝试从 hover.css 深度链接我需要的效果,但这是一个马蜂窝,因为这些文件对 hover 库的其他部分具有下游依赖性。这显然不是特定于悬停,而是任何你想在 Angular 组件的 CSS 文件中导入和使用供应商库而不复制库的场景。

有什么想法吗?

最佳答案

hover.scss 文件中有什么?它只是混合或其他 CSS 吗?如果你只有 mixins 那么你应该没问题,如果你有一些 CSS 那么它就会被采用。例如:

这不会导致重复:

@mixin underline-from-left {
    text-decoration: underline;
}

如果你有这样的东西,那么 span block 将重复你导入它的次数:

@mixin underline-from-left {
    text-decoration: underline;
}

span {
    display: block;
}

也许一个想法是将 mixins 与实际 CSS 分开,然后仅导入 mixins 文件。

关于css - 如何在不复制库的情况下在 Angular 组件的 CSS 中使用第三方 CSS 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55796828/

相关文章:

javascript - jQuery slider 未正确突出显示

jQuery 将颜色分配给 li 列表

Angular 路由器无法识别路径中的 ()

javascript - 在 typescript 中使用 react-redux connect

asynchronous - 相当于Dart的TypeScript `Completer`

Typescript - 具有已知键的键/值类型

css - 问题 css 高度和文本字段在表单中的定位

Angular 2 : cannot get two ways binding to work in custom component

angular - 在 Angular 中渲染模板之前加载数据

html - <table><tbody> 可滚动?