@@ -42,7 +42,7 @@ def start_license_checker(self):
42
42
tmp_custom_json = 'custom.json'
43
43
license_checker_cmd = f'license-checker --excludePrivatePackages --production --json --out { self .input_file_name } '
44
44
custom_path_option = ' --customPath '
45
- npm_install_cmd = 'npm install --prod '
45
+ npm_install_cmd = 'npm install --omit=dev '
46
46
47
47
if os .path .isdir (node_modules ) != 1 :
48
48
logger .info ("node_modules directory is not existed. So it executes 'npm install'." )
@@ -64,6 +64,8 @@ def start_license_checker(self):
64
64
else :
65
65
self .append_input_package_list_file (self .input_file_name )
66
66
67
+ if self .flag_tmp_node_modules :
68
+ shutil .rmtree (node_modules , ignore_errors = True )
67
69
os .remove (tmp_custom_json )
68
70
69
71
return ret
@@ -77,13 +79,19 @@ def make_custom_json(self, tmp_custom_json):
77
79
def parse_rel_dependencies (self , rel_name , rel_ver , rel_dependencies ):
78
80
_dependencies = 'dependencies'
79
81
_version = 'version'
82
+ _peer = 'peerMissing'
80
83
81
84
for rel_dep_name in rel_dependencies .keys ():
82
85
# Optional, non-installed dependencies are listed as empty objects
83
86
if rel_dependencies [rel_dep_name ] == {}:
84
87
continue
88
+ if _peer in rel_dependencies [rel_dep_name ]:
89
+ if rel_dependencies [rel_dep_name ][_peer ]:
90
+ continue
85
91
if f'{ rel_name } ({ rel_ver } )' not in self .relation_tree :
86
92
self .relation_tree [f'{ rel_name } ({ rel_ver } )' ] = []
93
+ elif f'{ rel_dep_name } ({ rel_dependencies [rel_dep_name ][_version ]} )' in self .relation_tree [f'{ rel_name } ({ rel_ver } )' ]:
94
+ continue
87
95
self .relation_tree [f'{ rel_name } ({ rel_ver } )' ].append (f'{ rel_dep_name } ({ rel_dependencies [rel_dep_name ][_version ]} )' )
88
96
if _dependencies in rel_dependencies [rel_dep_name ]:
89
97
self .parse_rel_dependencies (rel_dep_name , rel_dependencies [rel_dep_name ][_version ],
@@ -94,7 +102,7 @@ def parse_transitive_relationship(self):
94
102
_version = 'version'
95
103
_name = 'name'
96
104
97
- cmd = 'npm ls -a --prod --json -s'
105
+ cmd = 'npm ls -a --omit=dev --json -s'
98
106
result = subprocess .run (cmd , shell = True , capture_output = True , text = True )
99
107
rel_tree = result .stdout
100
108
if rel_tree is None :
@@ -114,7 +122,15 @@ def parse_transitive_relationship(self):
114
122
115
123
def parse_direct_dependencies (self ):
116
124
try :
117
- self .parse_transitive_relationship ()
125
+ if os .path .isfile (const .SUPPORT_PACKAE .get (self .package_manager_name )):
126
+ if not self .flag_tmp_node_modules :
127
+ shutil .move (node_modules , f'tmp_fl_{ node_modules } ' )
128
+ self .parse_transitive_relationship ()
129
+ if not self .flag_tmp_node_modules :
130
+ shutil .move (f'tmp_fl_{ node_modules } ' , node_modules )
131
+ else :
132
+ logger .info ('Direct/transitive support is not possible because the package.json file does not exist.' )
133
+ self .direct_dep = False
118
134
except Exception as e :
119
135
logger .warning (f'Cannot print direct/transitive dependency: { e } ' )
120
136
self .direct_dep = False
0 commit comments