반응형
Vite로 Vue2+Vuetify 앱을 빌드할 때 Vuetify 변수 재정의
Vue2+Vuetify 앱을 Vue-CLI/Webpack에서 Vite로 마이그레이션하려고 해.앱에 SCSS 파일이 몇 개 있는데main.scss
그리고variables.scss
후자가 전자가 수입하여
main.scss
@import 'variables';
// global style rules (omitted)
variable.scss
// override some Vuetify variables and defined 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;
main.scss
루트 구성 요소에서 가져오며, 이는 다음을 의미한다.
- 을 규정하다.
main.scss
모든 구성 요소에 적용됨 - 에 있어서의 변수.
variables.scss
추가 수입 없이 어떤 부품에서도 참조할 수 있다. - Vuetify에 의해 정의된 변수는 추가 가져오기 없이 모든 구성 요소에서 참조될 수 있음
- 에 있어서의 변수.
variables.scss
동일한 이름으로 Vuetify 변수를 재정의하십시오.
그러나 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";`
},
},
},
});
하지만 (4)이 더 이상 작동하지 않는 경우는 여전하다.
내가 알기로는 Vue-CLI로 건물을 지을 때 부에티파 로더가 이런 행동을 담당하는데, Vite로 건물을 지을 때 부에티파 변수를 어떻게 오버라이드하는지는 명확하지 않은 것으로 알고 있다.
이 작업은 와 동등한 Vite 를 사용하여 수행된다.vuetify-loader
.
사용할 Vite 구성unplugin-vue-components
사용 시 자동으로 Vuetify 구성 요소와 스타일을 가져오는 Vuetify resolver와 함께(예:vuetify-loader
):
// vite.config.js
import { defineConfig } from 'vite'
import Components from 'unplugin-vue-components/vite'
import { VuetifyResolver } from 'unplugin-vue-components/resolvers'
export default defineConfig({
plugins: [
⋮
Components({
resolvers: [VuetifyResolver()],
}),
],
})
참고: SCSS 들여쓰기 구문은 기본적으로 활성화되어 있으므로additionalData
세미콜론을 포함할 수 없으며 각 행은 새 줄 문자로 끝나야 한다.
// vite.config.js
export default defineConfig({
css: {
preprocessorOptions: {
sass: {
// ❌ no semicolons for indented syntax
// additionalData: `@import "./src/styles/variables"; @import "vuetify/src/styles/settings/_variables";`
// ✅
additionalData: [
'@import "./src/styles/variables"',
'@import "vuetify/src/styles/settings/_variables"',
'', // end with newline
].join('\n'),
},
},
},
})
Vuetify 플러그인 설정에서 가져올 위치vuetify/lib/framework
에서가 아니라vuetify
기본 Vuetify CSS를 가져오지 마십시오.
// plugins/vuetify.js
import Vue from 'vue'
// ❌ defeats dynamic imports from unplugin-vue-components
// import Vuetify from 'vuetify'
// import 'vuetify/dist/vuetify.min.css'
// ✅
import Vuetify from 'vuetify/lib/framework'
Vue.use(Vuetify)
export default new Vuetify({/* options */})
반응형
'programing' 카테고리의 다른 글
슬롯에 있는 아동 구성 요소의 반응형 데이터에 액세스하는 방법 (0) | 2022.04.14 |
---|---|
vuex에서 이벤트 개체를 "vuex"로 보내시겠습니까? (0) | 2022.04.14 |
C 코드의 오류 처리 (0) | 2022.04.14 |
const char* 어레이 초기화 쉼표가 없는 경우 컴파일러 경고 생성 (0) | 2022.04.14 |
JPA @Column 주석을 참조하여 insertable=false 및 updateable=false에 대해 설명하십시오. (0) | 2022.04.14 |