Nuxt layout import 不同的 css

突然遇到了一個比較特殊的狀況,想要將兩包 vue 檔案整合進一個 nuxt 專案,各個 vue 檔案已經有了 css 樣式,如果全部都整合進 global css 內會有樣式互相覆蓋的問題。

Nuxt layout import 不同的 css

突然遇到了一個比較特殊的狀況,想要將兩包 vue 檔案整合進一個 nuxt 專案,各個 vue 檔案已經有了 css 樣式,如果全部都整合進 global css 內會有樣式互相覆蓋的問題。
查了一下 github 上有相關的討論CSS from multiple layouts is being included on individual pages #3877

解決方法

稍微看了一下,整串的討論解法不外乎都是 body 加上 class 在使用 css scoped 分別掛載樣式,或是 layout link 不同的 css 檔案,我個人的話選擇了以下方式。

前置作業

我自己先整理過兩份的 css 找出共同的樣式,掛 global

export default {
  css: [
    '@/assets/scss/main.scss'
  ],
}

拆分 layout 不同的樣式

layout-a:

<style lang="scss" scoped>
.layout-a{
  &::v-deep {
    @import '~assets/scss/layout-a.scss';
  }
}
</style>

layout-b:

<style lang="scss" scoped>
.layout-b{
  &::v-deep {
    @import '~assets/scss/layout-b.scss';
  }
}
</style>

在還沒看到更好的解法之前,自己是用這種方式解決。