1️⃣ cli 创建项目

2️⃣ 使用 scss

安装如下包

  1. npm install node-sass@4.14.1 --save-dev
  2. npm install sass-loader@8.0.2 --save-dev
  3. npm install node-sass@4 sass-loader@8 --save-dev

在样式中使用

  1. <template>
  2. <div id="app">
  3. <h1>App</h1>
  4. </div>
  5. </template>
  6. <script>
  7. export default {};
  8. </script>
  9. <style lang="scss" scoped>
  10. @mixin color {
  11. color: #ccc;
  12. }
  13. h1 {
  14. @include color;
  15. }
  16. </style>

2️⃣ 配置全局 scss

vue.config.js 中配置

  1. // vue.config.js
  2. module.exports = {
  3. css: {
  4. loaderOptions: {
  5. /**
  6. * 给 sass-loader 传递选项
  7. * @/ 是 src/ 的别名
  8. * 所以这里假设你有 `src/styles` 这个文件夹, 文件夹里有 scss 文件, 分别为
  9. * variables.scss 全局遍历 scss 文件
  10. * mixins.scss 全局混合 scss 文件
  11. * global.scss 全局样式 scss 文件
  12. * 注意:sass-loader 不同的版本有不同的配置名称
  13. * sass-loader v8- (这个选项名是 "data")
  14. * sass-loader v8中 (这个选项名是 "prependData")
  15. * sass-loader v10+ (这个选项名是 "additionalData")
  16. * 这里我们的版本是 "sass-loader": "^8.0.2" 所以使用 "prependData" 配置
  17. */
  18. scss: {
  19. prependData: `
  20. @import '@/styles/variables.scss';
  21. @import '@/styles/mixins.scss';
  22. @import '@/styles/global.scss';
  23. `,
  24. },
  25. },
  26. },
  27. };
  1. 组件中使用
  1. <template>
  2. <div id="app">
  3. <h1 class="variables">variables</h1>
  4. <h1 class="mixins">mixins</h1>
  5. <h1 class="global">global</h1>
  6. </div>
  7. </template>
  8. <script>
  9. export default {};
  10. </script>
  11. <style lang="scss">
  12. .variables {
  13. color: $color;
  14. }
  15. .mixins {
  16. @include color;
  17. }
  18. </style>

1️⃣ vite 创建项目

2️⃣ 使用 scss

以前用 vue-cli 的时候,还要安装 sass-loader、node-sass 什么的,安装的时候还会遇到各种问题,但是 vite 其实安装 sass 就可以了,很简单

  1. npm install --save-dev sass

2️⃣ 创建全局 scss

  1. import { defineConfig } from "vite";
  2. import { resolve } from "path";
  3. import vue from "@vitejs/plugin-vue";
  4. // https://vitejs.dev/config/
  5. export default defineConfig({
  6. plugins: [vue()],
  7. resolve: {
  8. alias: [{ find: "@", replacement: resolve(__dirname, "src") }],
  9. },
  10. css: {
  11. preprocessorOptions: {
  12. scss: {
  13. additionalData: '@import "@/common/global.scss";',
  14. },
  15. },
  16. },
  17. });