install: php 단에서 npm 설치 환경 구성
This commit is contained in:
@@ -3,6 +3,51 @@ namespace sammo;
|
||||
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
set_time_limit(600);
|
||||
|
||||
function tryNpmInstall()
|
||||
{
|
||||
$npmResultPath = '../npm_recent.json.log';
|
||||
$packageJsonPath = '../package.json';
|
||||
$packageJsonLockPath = '../package-lock.json';
|
||||
|
||||
$packageJsonHash = hash_file('sha512', $packageJsonPath);
|
||||
$timestamp = time();
|
||||
if (file_exists($npmResultPath) && file_exists($packageJsonLockPath)) {
|
||||
do {
|
||||
$result = json_decode(file_get_contents($npmResultPath));
|
||||
$oldJsonHash = $result->packageJsonHash;
|
||||
$oldTimestamp = $result->updateTimestamp;
|
||||
|
||||
//1. package.json 파일이 다르면 업데이트.
|
||||
if ($packageJsonHash != $oldJsonHash) {
|
||||
break;
|
||||
}
|
||||
|
||||
//2. package-lock.json 업데이트가 2주를 초과했다면 업데이트.
|
||||
if($oldTimestamp + 60*60*24*14 < $timestamp){
|
||||
break;
|
||||
}
|
||||
|
||||
//그것도 아니라면 업데이트하지 않겠다.
|
||||
return;
|
||||
} while (0);
|
||||
}
|
||||
|
||||
exec("npm install", $output, $result_code);
|
||||
if ($result_code != 0) {
|
||||
Json::die([
|
||||
'result' => false,
|
||||
'reason' => $output
|
||||
]);
|
||||
}
|
||||
|
||||
file_put_contents($npmResultPath, json_encode([
|
||||
'packageJsonHash'=>$packageJsonHash,
|
||||
'updateTimestamp'=>$timestamp,
|
||||
]));
|
||||
}
|
||||
tryNpmInstall();
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
Reference in New Issue
Block a user