@@ -16,32 +16,38 @@ type VueVersion = '3' | '2.7' | '2.6'
1616
1717const vueVersion : VueVersion [ ] = [ '3' , '2.7' , '2.6' ]
1818
19- const vueVersionToVitePlugin : Record < VueVersion , string > = {
19+ const toVitePlugin : Record < VueVersion , string > = {
2020 3 : '@vitejs/plugin-vue' ,
2121 2.7 : '@vitejs/plugin-vue2' ,
2222 2.6 : 'vite-plugin-vue2' ,
2323}
2424
25- const vueVersionToDeps : Record < VueVersion , Record < string , string > > = {
25+ const toPackageOptions : Record < VueVersion , Record < string , Record < string , any > > > = {
2626 3 : {
27- '@vitejs/plugin-vue' : 'latest' ,
28- '@vue/compiler-sfc' : 'latest' ,
29- '@vue/test-utils' : 'latest' ,
30- 'vue' : 'latest' ,
27+ devDependencies : {
28+ '@vitejs/plugin-vue' : 'latest' ,
29+ '@vue/compiler-sfc' : 'latest' ,
30+ '@vue/test-utils' : 'latest' ,
31+ 'vue' : 'latest' ,
32+ } ,
3133 } ,
3234 2.7 : {
33- '@vitejs/plugin-vue2' : 'latest' ,
34- '@vue/test-utils' : 'legacy' ,
35- 'vue' : '~2.7.14' ,
36- 'vue-template-compiler' : '~2.7.14' ,
35+ devDependencies : {
36+ '@vitejs/plugin-vue2' : 'latest' ,
37+ '@vue/test-utils' : 'legacy' ,
38+ 'vue' : '~2.7.14' ,
39+ 'vue-template-compiler' : '~2.7.14' ,
40+ } ,
3741 } ,
3842 2.6 : {
39- '@vue/composition-api' : 'latest' ,
40- '@vue/test-utils' : 'legacy' ,
41- 'vite-plugin-vue2' : 'latest' ,
42- 'unplugin-vue2-script-setup' : 'latest' ,
43- 'vue' : '~2.6.14' ,
44- 'vue-template-compiler' : '~2.6.14' ,
43+ devDependencies : {
44+ '@vue/composition-api' : 'latest' ,
45+ '@vue/test-utils' : 'legacy' ,
46+ 'vite-plugin-vue2' : 'latest' ,
47+ 'unplugin-vue2-script-setup' : 'latest' ,
48+ 'vue' : '~2.6.14' ,
49+ 'vue-template-compiler' : '~2.6.14' ,
50+ } ,
4551 } ,
4652}
4753
@@ -69,8 +75,8 @@ async function dev() {
6975 // 删掉 vue 相关引入
7076 const existedVuePlugins : Record < string , boolean > = { }
7177 for ( const k in mod . imports ) {
72- for ( const vueVersion in vueVersionToVitePlugin ) {
73- if ( mod . imports [ k ] && [ vueVersionToVitePlugin [ vueVersion as VueVersion ] , 'unplugin-vue2-script-setup/vite' ] . includes ( mod . imports [ k ] . from ) ) {
78+ for ( const vueVersion in toVitePlugin ) {
79+ if ( mod . imports [ k ] && [ toVitePlugin [ vueVersion as VueVersion ] , 'unplugin-vue2-script-setup/vite' ] . includes ( mod . imports [ k ] . from ) ) {
7480 delete mod . imports [ k ]
7581 existedVuePlugins [ k ] = true
7682 }
@@ -92,7 +98,7 @@ async function dev() {
9298
9399 // 添加 vue 相关插件
94100 addVitePlugin ( mod , {
95- from : vueVersionToVitePlugin [ targetVersion ] ,
101+ from : toVitePlugin [ targetVersion ] ,
96102 imported : targetVersion === '2.6' ? 'createVuePlugin' : 'default' ,
97103 constructor : 'vue' ,
98104 } )
@@ -111,24 +117,28 @@ async function dev() {
111117
112118 const pkg = JSON . parse ( fs . readFileSync ( './package.json' , 'utf-8' ) )
113119
114- for ( const ver in vueVersionToDeps ) {
120+ // 删除非目标版本的依赖
121+ for ( const ver of vueVersion ) {
115122 if ( ver !== targetVersion ) {
116- for ( const deps in vueVersionToDeps [ ver as VueVersion ] ) {
117- // 删除非目标版本的依赖
118- // peerDependencies 中的依赖会被 pnpm 自动添加,不删除
119- if ( pkg . devDependencies [ deps ] && ! vueVersionToDeps [ targetVersion ] [ deps ] && ! pkg . peerDependencies [ deps ] ) {
120- delete pkg . devDependencies [ deps ]
121- isDepsChanged = true
123+ for ( const option in toPackageOptions [ ver ] ) {
124+ for ( const dep in toPackageOptions [ ver ] [ option ] ) {
125+ if ( pkg [ option ] [ dep ] && ! toPackageOptions [ targetVersion ] [ option ] [ dep ] ) {
126+ delete pkg [ option ] [ dep ]
127+ isDepsChanged = true
128+ }
122129 }
123130 }
124131 }
125132 }
126133
127- for ( const targetDeps in vueVersionToDeps [ targetVersion ] ) {
128- // 添加目标版本的依赖
129- if ( pkg . devDependencies [ targetDeps ] !== vueVersionToDeps [ targetVersion ] [ targetDeps ] ) {
130- pkg . devDependencies [ targetDeps ] = vueVersionToDeps [ targetVersion ] [ targetDeps ]
131- isDepsChanged = true
134+ // 添加目标版本的依赖
135+ for ( const option in toPackageOptions [ targetVersion ] ) {
136+ for ( const dep in toPackageOptions [ targetVersion ] [ option ] ) {
137+ const depVer = toPackageOptions [ targetVersion ] [ option ] [ dep ]
138+ if ( pkg [ option ] [ dep ] !== depVer ) {
139+ pkg [ option ] [ dep ] = depVer
140+ isDepsChanged = true
141+ }
132142 }
133143 }
134144
0 commit comments