fix: tryNpmInstall 이후 genJS까지 실행해야 안전
This commit is contained in:
@@ -3,51 +3,6 @@ namespace sammo;
|
|||||||
|
|
||||||
require(__DIR__.'/../vendor/autoload.php');
|
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>
|
<!DOCTYPE html>
|
||||||
<html lang="ko">
|
<html lang="ko">
|
||||||
|
|||||||
+61
@@ -1,4 +1,65 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
|
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 false;
|
||||||
|
} 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,
|
||||||
|
]));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
function genJS()
|
||||||
|
{
|
||||||
|
$command = "./node_modules/.bin/webpack build";
|
||||||
|
|
||||||
|
exec(($command), $output, $result_code);
|
||||||
|
if ($result_code != 0) {
|
||||||
|
Json::die([
|
||||||
|
'result' => false,
|
||||||
|
'reason' => $output
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(tryNpmInstall()){
|
||||||
|
genJS();
|
||||||
|
}
|
||||||
|
|
||||||
header('location:f_install/install.php');
|
header('location:f_install/install.php');
|
||||||
+5
-2
@@ -67,7 +67,7 @@ function tryNpmInstall()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//그것도 아니라면 업데이트하지 않겠다.
|
//그것도 아니라면 업데이트하지 않겠다.
|
||||||
return;
|
return false;
|
||||||
} while (0);
|
} while (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,12 +83,15 @@ function tryNpmInstall()
|
|||||||
'packageJsonHash'=>$packageJsonHash,
|
'packageJsonHash'=>$packageJsonHash,
|
||||||
'updateTimestamp'=>$timestamp,
|
'updateTimestamp'=>$timestamp,
|
||||||
]));
|
]));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//묻고 따지지 않고 일단 npm install은 시도한다.
|
//묻고 따지지 않고 일단 npm install은 시도한다.
|
||||||
//hwe 업데이트인 경우에만 한번 더 부른다.
|
//hwe 업데이트인 경우에만 한번 더 부른다.
|
||||||
|
|
||||||
tryNpmInstall();
|
if(tryNpmInstall()){
|
||||||
|
genJS(Util::array_last_key(ServConfig::getServerList()));
|
||||||
|
}
|
||||||
$session = Session::requireLogin(null)->setReadOnly();
|
$session = Session::requireLogin(null)->setReadOnly();
|
||||||
|
|
||||||
$request = $_POST + $_GET;
|
$request = $_POST + $_GET;
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ module.exports = (env, argv) => {
|
|||||||
const mode = argv.mode ?? 'production';
|
const mode = argv.mode ?? 'production';
|
||||||
const tsDir = resolve(__dirname, `${target}/ts/`);
|
const tsDir = resolve(__dirname, `${target}/ts/`);
|
||||||
const ingame_vue = {
|
const ingame_vue = {
|
||||||
name: 'ingame_vue',
|
name: `ingame_${target}_vue`,
|
||||||
resolve: {
|
resolve: {
|
||||||
extensions: [".ts", ".tsx", ".vue", ".js"],
|
extensions: [".ts", ".tsx", ".vue", ".js"],
|
||||||
alias: {
|
alias: {
|
||||||
@@ -164,7 +164,7 @@ module.exports = (env, argv) => {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
const ingame = {
|
const ingame = {
|
||||||
name: 'ingame',
|
name: `ingame_${target}`,
|
||||||
resolve: {
|
resolve: {
|
||||||
extensions: [".js", ".ts", ".tsx"],
|
extensions: [".js", ".ts", ".tsx"],
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user