@@ -30,6 +30,11 @@ export class NodePackageManager implements INodePackageManager {
30
30
for ( let name in jsonContentBefore . dependencies ) {
31
31
dependenciesBefore . push ( name ) ;
32
32
}
33
+ if ( jsonContentBefore . devDependencies ) {
34
+ for ( let devName in jsonContentBefore . devDependencies ) {
35
+ dependenciesBefore . push ( devName ) ;
36
+ }
37
+ }
33
38
}
34
39
35
40
let flags = this . getFlagsString ( config , true ) ;
@@ -46,6 +51,11 @@ export class NodePackageManager implements INodePackageManager {
46
51
for ( let name in jsonContentAfter . dependencies ) {
47
52
dependenciesAfter . push ( name ) ;
48
53
}
54
+ if ( jsonContentAfter . devDependencies ) {
55
+ for ( let devName in jsonContentAfter . devDependencies ) {
56
+ dependenciesAfter . push ( devName ) ;
57
+ }
58
+ }
49
59
}
50
60
51
61
/** This diff is done in case the installed pakcage is a URL address, a path to local directory or a .tgz file
@@ -54,11 +64,18 @@ export class NodePackageManager implements INodePackageManager {
54
64
* The solution is to compare package.json project dependencies before and after install and get the name of the installed package,
55
65
* even if it's installed through local path or URL. If command installes more than one package, only the package originally installed is returned.
56
66
*/
57
- let diff = _ ( jsonContentAfter . dependencies )
67
+ let dependencyDiff = _ ( jsonContentAfter . dependencies )
58
68
. omitBy ( ( val : string , key : string ) => jsonContentBefore && jsonContentBefore . dependencies && jsonContentBefore . dependencies [ key ] && jsonContentBefore . dependencies [ key ] === val )
59
69
. keys ( )
60
70
. value ( ) ;
61
71
72
+ let devDependencyDiff = _ ( jsonContentAfter . devDependencies )
73
+ . omitBy ( ( val : string , key : string ) => jsonContentBefore && jsonContentBefore . devDependencies && jsonContentBefore . devDependencies [ key ] && jsonContentBefore . devDependencies [ key ] === val )
74
+ . keys ( )
75
+ . value ( ) ;
76
+
77
+ let diff = dependencyDiff . concat ( devDependencyDiff ) ;
78
+
62
79
if ( diff . length <= 0 && dependenciesBefore . length === dependenciesAfter . length && packageName !== pathToSave ) {
63
80
this . $errors . failWithoutHelp ( `The plugin ${ packageName } is already installed` ) ;
64
81
}
0 commit comments