Skip to content

Commit 21c0a79

Browse files
committed
feat: package.json dependencies auto update
1 parent 2b2632b commit 21c0a79

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

bin/vue-codemod.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import builtInTransformations from '../transformations'
1313
import { excludedTransformations } from '../transformations'
1414
import vueTransformations from '../vue-transformations'
1515
import runTransformation from '../src/runTransformation'
16+
import { transform as packageTransform } from '../src/packageTransformation'
1617

1718
import type { TransformationModule } from '../src/runTransformation'
1819

@@ -65,6 +66,7 @@ async function main() {
6566
transformationName,
6667
transformationModule
6768
)
69+
packageTransform()
6870
}
6971

7072
if (runAllTransformation) {
@@ -77,6 +79,7 @@ async function main() {
7779
for (let key in vueTransformations) {
7880
processTransformation(resolvedPaths, key, vueTransformations[key])
7981
}
82+
packageTransform()
8083
}
8184
}
8285
/**

src/packageTransformation.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import * as fs from 'fs'
2+
import * as globby from 'globby'
3+
import * as prettier from 'prettier'
4+
5+
/**
6+
* Creates a fix command that inserts text at the specified index in the source text.
7+
* @param {int} index The 0-based index at which to insert the new text.
8+
* @param {string} text The text to insert.
9+
* @returns {Object} The fix command.
10+
* @private
11+
*/
12+
export function transform(): void {
13+
const resolvedPaths = globby.sync('package.json' as string)
14+
if (resolvedPaths.length <= 0) {
15+
return
16+
}
17+
18+
let packageObject: any = JSON.parse(
19+
fs.readFileSync(resolvedPaths[0]).toString()
20+
)
21+
22+
if (packageObject!.dependencies!.vue != undefined) {
23+
packageObject.dependencies.vue = '^3.1.1'
24+
}
25+
if (packageObject!.dependencies!.vuex != undefined) {
26+
packageObject.dependencies!.vuex = '^4.0.1'
27+
}
28+
if (packageObject!.dependencies['vue-router'] != undefined) {
29+
packageObject.dependencies['vue-router'] = '^4.0.8'
30+
}
31+
if (packageObject!.dependencies['vue-i18n'] != undefined) {
32+
packageObject.dependencies['vue-i18n'] = '^9.1.6'
33+
}
34+
35+
if ((packageObject!.devDependencies['vue-template-compiler'] = undefined)) {
36+
delete packageObject.devDependencies['vue-template-compiler']
37+
}
38+
39+
packageObject.devDependencies['@vue/compiler-sfc'] = '^3.1.1'
40+
packageObject.devDependencies['eslint'] = '^7.20.0'
41+
packageObject.devDependencies['eslint-plugin-vue'] = '^7.11.1'
42+
43+
let formatted = prettier.format(
44+
JSON.stringify(packageObject),
45+
Object.assign({ parser: 'json' }, packageObject.prettier)
46+
)
47+
fs.writeFileSync(resolvedPaths[0], formatted)
48+
}

0 commit comments

Comments
 (0)