在 vue-cli3 中使用 webpack 从每个页面分离全局基本样式

Separate global basic styles from every page using webpack in vue-cli3

我正在使用 Vue-cli3.x,这是一个多页项目。我在这个项目中使用 SCSS 并使用 loaderOptions 分隔全局基本样式,如下所示:

样式关系如下:基本样式--->组件样式--->页面样式

但是在构建我的项目之后,我发现我的 CSS 文件不止一次包含基本样式。 例如:dashboardAirLeft page 包括 chunk-common.cssdashboardAirLeft.css,但是在chunk-common.cssdashboardAirLeft.css中都有normalize.scss 代码,如下所示:

我的产品的 Webpack 配置是这样的:

我的目标是将公共代码与我的页面名称 css 文件分开

使用 loaderOptions 数据 属性 意味着您导入的文件 将被导入每个组件 <style> 标签 。因此每个 page-name css 文件也将导入您定义的所有三个 scss 文件。相反,您可能只想在 App.vue 组件(或主入口点)中导入一次公共 scss 文件:

App.vue

<template>...</template>

<script>...</script>

<style lang="scss">
  @import "@/assets/styles/scss/normalize.scss"
  @import "@/assets/styles/scss/base-style.scss"
</style>

但是,您确实希望将 variables-custom.scss 文件导入每个页面,以便您可以访问每个组件中的 scss 变量。所以你应该在你的 loaderOptions:

中留下 only variables-custom.scss

vue.config.js

css: {
  loaderOptions: {
    sass: {
      data: "@import '@/assets/styles/scss/variables-custom.scss'"
    }
  }
}