설치된 npm 모듈의 이름과 버전 정보 추출
npm 을 사용해 node.js 모듈을 설치하다 보면 의존성으로 인해 부가적으로 설치되는 모듈이 많다. 이 때 설치된 모듈의 이름과 버전 정보를 추출하고자 아래와 같은 php 스크립트를 작성해 봤다.
<?php
$json_file = $argv[1];
if (!is_file($json_file)) {
echo 'File not found : '.basename($json_file)."\n";
exit;
}
$json = file_get_contents($json_file);
$data = json_decode($json, true);
$arr_package = [];
foreach ($data['dependencies'] as $key => $value) {
$arr_package[] = $key.'@'.$value['version'];
}
echo implode("\n", $arr_package).PHP_EOL;
npm을 통해 설치된 모듈 정보는 package-lock.json
파일에 기록되는데 json 형식이라 쉽게 추출할 수가 있다. 예를 들어 아래와 같은 package-lock.json
파일에서 모듈 정보를 추출해 보겠다.
위의 php 코드를 사용해 정보를 추출해보면 아래와 같이 표시된다.
accepts@1.3.8
array-flatten@1.1.1
body-parser@1.20.1
bytes@3.1.2
call-bind@1.0.2
content-disposition@0.5.4
content-type@1.0.5
cookie@0.5.0
cookie-signature@1.0.6
debug@2.6.9
depd@2.0.0
destroy@1.2.0
ee-first@1.1.1
encodeurl@1.0.2
escape-html@1.0.3
etag@1.8.1
express@4.18.2
finalhandler@1.2.0
forwarded@0.2.0
fresh@0.5.2
function-bind@1.1.1
get-intrinsic@1.2.0
has@1.0.3
has-symbols@1.0.3
http-errors@2.0.0
iconv-lite@0.4.24
inherits@2.0.4
ipaddr.js@1.9.1
media-typer@0.3.0
merge-descriptors@1.0.1
methods@1.1.2
mime@1.6.0
mime-db@1.52.0
mime-types@2.1.35
ms@2.0.0
negotiator@0.6.3
object-inspect@1.12.3
on-finished@2.4.1
parseurl@1.3.3
path-to-regexp@0.1.7
proxy-addr@2.0.7
qs@6.11.0
range-parser@1.2.1
raw-body@2.5.1
safe-buffer@5.2.1
safer-buffer@2.1.2
send@0.18.0
serve-static@1.15.0
setprototypeof@1.2.0
side-channel@1.0.4
statuses@2.0.1
toidentifier@1.0.1
type-is@1.6.18
unpipe@1.0.0
utils-merge@1.0.1
vary@1.1.2