@@ -16,32 +16,38 @@ type VueVersion = '3' | '2.7' | '2.6'
16
16
17
17
const vueVersion : VueVersion [ ] = [ '3' , '2.7' , '2.6' ]
18
18
19
- const vueVersionToVitePlugin : Record < VueVersion , string > = {
19
+ const toVitePlugin : Record < VueVersion , string > = {
20
20
3 : '@vitejs/plugin-vue' ,
21
21
2.7 : '@vitejs/plugin-vue2' ,
22
22
2.6 : 'vite-plugin-vue2' ,
23
23
}
24
24
25
- const vueVersionToDeps : Record < VueVersion , Record < string , string > > = {
25
+ const toPackageOptions : Record < VueVersion , Record < string , Record < string , any > > > = {
26
26
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
+ } ,
31
33
} ,
32
34
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
+ } ,
37
41
} ,
38
42
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
+ } ,
45
51
} ,
46
52
}
47
53
@@ -69,8 +75,8 @@ async function dev() {
69
75
// 删掉 vue 相关引入
70
76
const existedVuePlugins : Record < string , boolean > = { }
71
77
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 ) ) {
74
80
delete mod . imports [ k ]
75
81
existedVuePlugins [ k ] = true
76
82
}
@@ -92,7 +98,7 @@ async function dev() {
92
98
93
99
// 添加 vue 相关插件
94
100
addVitePlugin ( mod , {
95
- from : vueVersionToVitePlugin [ targetVersion ] ,
101
+ from : toVitePlugin [ targetVersion ] ,
96
102
imported : targetVersion === '2.6' ? 'createVuePlugin' : 'default' ,
97
103
constructor : 'vue' ,
98
104
} )
@@ -111,24 +117,28 @@ async function dev() {
111
117
112
118
const pkg = JSON . parse ( fs . readFileSync ( './package.json' , 'utf-8' ) )
113
119
114
- for ( const ver in vueVersionToDeps ) {
120
+ // 删除非目标版本的依赖
121
+ for ( const ver of vueVersion ) {
115
122
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
+ }
122
129
}
123
130
}
124
131
}
125
132
}
126
133
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
+ }
132
142
}
133
143
}
134
144
0 commit comments