1
1
package cc.unitmesh.ide.javascript.provider
2
2
3
3
import cc.unitmesh.devti.provider.BuildSystemProvider
4
+ import cc.unitmesh.devti.provider.DevPackage
4
5
import cc.unitmesh.devti.template.context.DockerfileContext
5
6
import cc.unitmesh.ide.javascript.JsDependenciesSnapshot
6
7
import com.intellij.javascript.nodejs.PackageJsonData
8
+ import com.intellij.javascript.nodejs.packageJson.NodeInstalledPackageFinder
9
+ import com.intellij.json.psi.JsonFile
10
+ import com.intellij.json.psi.JsonStringLiteral
7
11
import com.intellij.lang.javascript.buildTools.npm.NpmScriptsUtil
8
12
import com.intellij.lang.javascript.buildTools.npm.PackageJsonUtil
9
13
import com.intellij.openapi.application.runReadAction
10
14
import com.intellij.openapi.project.Project
11
15
import com.intellij.openapi.project.guessProjectDir
16
+ import com.intellij.psi.PsiFile
12
17
13
18
14
19
class JavaScriptBuildSystemProvider : BuildSystemProvider () {
@@ -34,12 +39,15 @@ class JavaScriptBuildSystemProvider : BuildSystemProvider() {
34
39
snapshot.packages.containsKey(" vite" ) -> {
35
40
buildTool = " Vite"
36
41
}
42
+
37
43
snapshot.packages.containsKey(" webpack" ) -> {
38
44
buildTool = " Webpack"
39
45
}
46
+
40
47
snapshot.packages.containsKey(" parcel" ) -> {
41
48
buildTool = " Parcel"
42
49
}
50
+
43
51
snapshot.packages.containsKey(" rollup" ) -> {
44
52
buildTool = " Rollup"
45
53
}
@@ -49,12 +57,15 @@ class JavaScriptBuildSystemProvider : BuildSystemProvider() {
49
57
snapshot.packages.containsKey(" vue" ) -> {
50
58
language = " Vue " + snapshot.packages[" vue" ]?.versionString()
51
59
}
60
+
52
61
snapshot.packages.containsKey(" react" ) -> {
53
62
language = " React " + snapshot.packages[" react" ]?.versionString()
54
63
}
64
+
55
65
snapshot.packages.containsKey(" angular" ) -> {
56
66
language = " Angular " + snapshot.packages[" angular" ]?.versionString()
57
67
}
68
+
58
69
snapshot.packages.containsKey(" next" ) -> {
59
70
language = " Next.js " + snapshot.packages[" next" ]?.versionString()
60
71
}
@@ -76,6 +87,18 @@ class JavaScriptBuildSystemProvider : BuildSystemProvider() {
76
87
taskString = taskString
77
88
)
78
89
}
90
+
91
+ override fun collectDependencies (project : Project , psiFile : PsiFile ): List <DevPackage > {
92
+ val packageJson = psiFile as ? JsonFile ? : return emptyList()
93
+ return PackageJsonUtil .getDependencies(packageJson, PackageJsonUtil .PROD_DEV_DEPENDENCIES )
94
+ .mapNotNull { jsonProperty ->
95
+ val packageName = jsonProperty.name
96
+ val version: String = (jsonProperty.value as ? JsonStringLiteral )?.value ? : return @mapNotNull null
97
+
98
+ DevPackage (" npm" , name = packageName, version = version)
99
+ }.toList()
100
+ }
101
+
79
102
}
80
103
81
104
fun PackageJsonData.PackageJsonDependencyEntry.versionString (): String {
0 commit comments