마이그레이션 빌드가 포함된 Vue 3.1.0-beta 버전이 릴리즈되었다.
@vue/compat
(일명 "마이그레이션 빌드")은 Vue 2의 동작이 호환되는 구성을 제공하는 Vue 3의 빌드이다. 마이그레이션 빌드는 기본적으로 Vue 2에서 실행되며, 몇 가지 예외 케이스말고는 왠만한 공통 APIs는 Vue 2와 동일하게 사용하다. Vue 3에서 변경되었거나 더이상 지원되지 않는 기능을 사용하면 런타임 경고가 발생한다. 기능의 호환성은 컴포넌트별로 활성화/비활성화 할 수 있다.
마이그레이션 빌드가 가능한 한 Vue 2의 동작을 모방하도록 최선을 다했지만, 업그레이드 할 수 없는 몇 가지 제한사항이 있다.
vue-server-renderer
를 @vue/server-renderer
로 대체해야 한다. Vue 3은 번들 렌더러의 역할을 사용자 영역에서 할 수 있어 더이상 번들 렌더러를 지원을 하지 않아, Vite와 함께 Vue 3 SSR을 사용하는 것을 추천한다. Nuxt를 사용하는 경우 Nuxt 3을 기다리는 것이 좋다.마이그레이션 빌드는 공개적으로 문서화된 Vue 2 API와 동작만을 포함하는 것을 목표로 한다. 공식적인 동작 외에 커스텀한 경우에 일일히 모든 케이스에 마이그레이션 빌드를 수정할 수 없으므로, 마이그레이션 빌드를 사용하여 버그가 나는 경우에 리펙토링을 해야한다.
2021년 3분기 후반에 릴리즈할 예정인 Vue 2.7버전에서 Composition API 및 기타 Vue 3 기능을 백포트할 것이다.
마이그레이션 빌드는 3.1 버전부터 제공된다. 2021년 후반까지만 마이너 버전으로 마이그레이션 빌드를 제공할 것이며, 그 때까지 개발자는 Vue 3의 표준 빌드로 전환하는 것을 목표로 해야 한다.
deprecated된 named / scoped slot 문법을 최신 문법으로 변경한다. (2.6 버전에서 이미 지원함)
package 버전 업데이트
"dependencies": {
- "vue": "^2.6.12",
+ "vue": "^3.1.0-0",
+ "@vue/compat": "^3.1.0-0"
...
},
"devDependencies": {
- "vue-template-compiler": "^2.6.12"
+ "@vue/compiler-sfc": "^3.1.0-0"
}
// vue.config.js module.exports = { chainWebpack: config => { config.resolve.alias.set('vue', '@vue/compat') config.module .rule('vue') .use('vue-loader') .tap(options => { return { ...options, compilerOptions: { compatConfig: { MODE: 2 } } } }) }일반적인 webpack
// webpack.config.js module.exports = { resolve: { alias: { vue: '@vue/compat' } }, module: { rules: [ { test: /\.vue$/, loader: 'vue-loader', options: { compilerOptions: { compatConfig: { MODE: 2 } } } } ] } }
많은 경고가 표시되지만 앱은 실행될 수 있어야 함.
<transition>
클래스 이름을 업데이트한다.
vuex-router-sync
를 사용하는 경우, store의 getter로 대체할 수 있다.<router-view>
에 <transition>
과 <keep-alive>
를 사용하는 경우 새로운 scoped-slot 기반의 문법을 사용해야한다. (https://next.router.vuejs.org/guide/migration/index.html#router-view-keep-alive-and-transition)