Dón*_*nal 9 sass vue.js vuejs2 vuetify.js vite
我正在尝试将 Vue2+Vuetify 应用程序从 Vue-CLI/Webpack 迁移到 Vite。该应用程序有几个 SCSS 文件,main.scss后者variables.scss由前者导入。
@import 'variables';
// global style rules (omitted)
Run Code Online (Sandbox Code Playgroud)
// override some Vuetify variables and define some variables of my own, e.g.
// Vuetify default is 48px
$data-table-mobile-row-min-height: 32px;
// Increase default height by 10px
// https://vuetifyjs.com/en/api/v-date-picker/#sass-variables
$date-picker-table-height: 252px;
Run Code Online (Sandbox Code Playgroud)
main.scss被导入到根组件中,这意味着:
main.scss应用于每个组件variables.scss可以在任何组件中引用,无需任何额外的导入variables.scss同名变量然而,迁移到Vite后,只有(1)仍然有效。我能够通过添加以下内容来解决(2)和(3)vite.config.js
export default defineConfig({
// other config omitted
css: {
preprocessorOptions: {
scss: {
// Make the variables defined in these files available to all components, without requiring an explicit
// @import of the files themselves
additionalData: `@import "./src/styles/variables"; @import "vuetify/src/styles/settings/_variables";`
},
},
},
});
Run Code Online (Sandbox Code Playgroud)
然而,情况仍然是(4)不再起作用。
据我所知,在使用 Vue-CLI 构建时, vuetify-loader负责此行为,但不清楚在使用 Vite 构建时如何覆盖 Vuetify 变量?
ton*_*y19 17
这是通过unplugin-vue-componentsVite 的等效项来完成的vuetify-loader。
配置 Vite 以与其 Vuetify 解析器一起使用unplugin-vue-components,该解析器在使用时自动导入 Vuetify 组件和样式(如vuetify-loader):
// vite.config.js\nimport { defineConfig } from \'vite\'\nimport Components from \'unplugin-vue-components/vite\'\nimport { VuetifyResolver } from \'unplugin-vue-components/resolvers\'\n\nexport default defineConfig({\n plugins: [\n \xe2\x8b\xae\n Components({\n resolvers: [VuetifyResolver()],\n }),\n ],\n})\nRun Code Online (Sandbox Code Playgroud)\n注意: SCSS 缩进语法默认启用,因此additionalData不能包含分号,并且每行必须以换行符结尾:
// vite.config.js\nexport default defineConfig({\n css: {\n preprocessorOptions: {\n sass: {\n // \xe2\x9d\x8c no semicolons for indented syntax\n // additionalData: `@import "./src/styles/variables"; @import "vuetify/src/styles/settings/_variables";`\n\n // \xe2\x9c\x85\n additionalData: [\n \'@import "./src/styles/variables"\',\n \'@import "vuetify/src/styles/settings/_variables"\',\n \'\', // end with newline\n ].join(\'\\n\'),\n },\n },\n },\n})\nRun Code Online (Sandbox Code Playgroud)\nVuetify 插件设置应该导入 fromvuetify/lib/framework而不是 from vuetify,并且不应该导入默认的 Vuetify CSS:
// plugins/vuetify.js\nimport Vue from \'vue\'\n\n// \xe2\x9d\x8c defeats dynamic imports from unplugin-vue-components\n// import Vuetify from \'vuetify\'\n// import \'vuetify/dist/vuetify.min.css\'\n\n// \xe2\x9c\x85\nimport Vuetify from \'vuetify/lib/framework\'\n\nVue.use(Vuetify)\n\nexport default new Vuetify({/* options */})\nRun Code Online (Sandbox Code Playgroud)\n\n