@@ -2,6 +2,27 @@ import { readFileAsJson } from "../../../../shared/readFileAsJson.js";
2
2
import { HydrationInputValues } from "../../../values/types.js" ;
3
3
import { formatJson } from "./formatters/formatJson.js" ;
4
4
5
+ const devDependenciesToRemove = [
6
+ "@babel/core" ,
7
+ "@babel/preset-env" ,
8
+ "@babel/preset-react" ,
9
+ "@babel/preset-typescript" ,
10
+ "@swc/jest" ,
11
+ "ava" ,
12
+ "babel-jest" ,
13
+ "commitlint" ,
14
+ "cson-parser" ,
15
+ "esbuild" ,
16
+ "eslint-config-prettier" ,
17
+ "eslint-plugin-prettier" ,
18
+ "eslint-plugin-simple-import-sort" ,
19
+ "jasmine" ,
20
+ "jest" ,
21
+ "mocha" ,
22
+ "npm-run-all" ,
23
+ "pretty-quick" ,
24
+ ] ;
25
+
5
26
export async function writePackageJson ( {
6
27
author,
7
28
description,
@@ -20,12 +41,20 @@ export async function writePackageJson({
20
41
| "repository"
21
42
| "unitTests"
22
43
> ) {
44
+ const existingPackageJson = ( await readFileAsJson (
45
+ "./package.json"
46
+ ) ) as object ;
47
+
23
48
return formatJson ( {
24
49
// To start, copy over all existing package fields (e.g. "dependencies")
25
- ...( ( await readFileAsJson ( "./package.json" ) ) as object ) ,
50
+ ...existingPackageJson ,
26
51
27
52
author : { email, name : author } ,
28
53
description,
54
+
55
+ // We copy all existing dev dependencies except those we know are not used anymore
56
+ devDependencies : copyDevDependencies ( existingPackageJson ) ,
57
+
29
58
engines : {
30
59
node : ">=18" ,
31
60
} ,
@@ -71,3 +100,17 @@ export async function writePackageJson({
71
100
types : undefined ,
72
101
} ) ;
73
102
}
103
+
104
+ function copyDevDependencies ( existingPackageJson : object ) {
105
+ const devDependencies =
106
+ "devDependencies" in existingPackageJson
107
+ ? ( existingPackageJson . devDependencies as Record < string , string > )
108
+ : { } ;
109
+
110
+ for ( const devDependencyToRemove of devDependenciesToRemove ) {
111
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
112
+ delete devDependencies [ devDependencyToRemove ] ;
113
+ }
114
+
115
+ return devDependencies ;
116
+ }
0 commit comments