Css Sass重复数据消除@导入

Css Sass重复数据消除@导入,css,reactjs,sass,webpack,node-sass,Css,Reactjs,Sass,Webpack,Node Sass,我试图为我的项目创建两个主题。我有以下设置: 风格 全球的 混血儿 助手 主题 现在每个主题都有一个index.scss: @import "../../mixins/index"; @import "./colors"; @import "./breakpoints"; @import "./typography"; @import "core"; 每个主题都有一个_core.scss: @if import-once('core.scss') { :global { htm

我试图为我的项目创建两个主题。我有以下设置:

风格

  • 全球的
  • 混血儿
  • 助手
  • 主题
现在每个主题都有一个index.scss:

@import "../../mixins/index";
@import "./colors";
@import "./breakpoints";
@import "./typography";
@import "core";
每个主题都有一个_core.scss:

@if import-once('core.scss') {
  :global {
    html, body {
      background-color: $grey-page-background;
      height: 100%;
    }

    body {
      color: $grey-text-primary;
      font-family: $font-family-standard;
    }

    body.page-body.modal-overflow-hidden {
      overflow: hidden;
    }

    .container {
      padding: 0;
      max-width: 1200px;
      margin-left: auto;
      margin-right: auto;
      width: 100%;
      @include breakpoint(large down) {
        padding: 0 10px;
      }
    }

    .no-margin {
      margin: 0 !important;
    }

    .text-center {
      text-align: center;
    }

    .green {
      color: $green-smava-primary;
    }

    a:focus, a:hover, a:active {
      color: inherit;
    }

    /* vb = vertical align block, for supporting browser dont support flex-box well */
    .vb {
      text-align: left;
    }

    .vb:before {
      content: '';
      display: inline-block;
      height: 100%;
      vertical-align: middle;
    }

    /* vc = vertical align center child, for supporting browser dont support flex-box well */
    .vc {
      display: inline-block;
      vertical-align: middle;
    }

    .ui.list {
      list-style-type: none;
      margin: 1em 0;
      padding: 0;
      .item {
        table-layout: fixed;
        list-style-type: none;
        list-style-position: outside;
        padding: .21428571em 0;
        line-height: 1.14285714em;
      }
    }

    .ui.list.large {
      font-size: 1.14285714em;
    }
  }

}
正如您所看到的->索引导入核心->现在主题被导入到相应的组件中(我们有一个组件版本控制系统-所以这种方法在这里很好)

因此,组件SCS可以如下所示:

    @import '~styles/theme/smava/index';

.dialog {
  &-input {
    margin: 0 0 10px 0;
  }
  &-action {
    border-top: 1px solid $grey-shadow-block;
    float: right;
  }
  &-button {
    &-pass {
      margin-right: 30px;
    }
    &-login {
      margin: 0;
    }
  }
}
因为我有多个组件,所以core.scs会多次导入

问题是,我需要为身体设置一种颜色——这就是我有这个core.scss的原因

那么我如何消除重复数据呢?不幸的是,导入主题的方法必须保持不变

我的堆栈: React/Webpack/Redux/Node sass