| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| import json |
| import sys |
|
|
| from mod.project.nodejs.base import NodeJs |
| from mod.project.nodejs.utils import test_registry_url |
|
|
| if "/www/server/panel/class" not in sys.path: |
| sys.path.insert(0, "/www/server/panel/class") |
|
|
| import public |
|
|
|
|
| class PackageManage(NodeJs): |
|
|
| def __init__(self): |
| super(PackageManage, self).__init__() |
|
|
| |
| def install_package(self, get, manager: str = "npm", |
| package_name: str = None, |
| path: str = None, |
| is_global: bool = False, |
| force: bool = False, |
| check_update: bool = False, |
| *args, **kwargs): |
| ''' |
| @name 安装依赖包 |
| @param manager: |
| @param package_name string 依赖包名称 |
| @param path string 项目路径 |
| @param is_global: |
| @param force: |
| @param check_update: |
| ''' |
| import os |
| if path is None: |
| self.ws_err_exit(False, 'path参数不能为空', code=2) |
|
|
| get._ws.send(json.dumps(self.wsResult( |
| True, |
| "开始安装依赖包...", |
| code=1 |
| ))) |
|
|
| |
| lock_file = ("package-lock.json", "yarn.lock", "pnpm-lock.yaml") |
| for lock in lock_file: |
| if os.path.exists("{}/{}".format(path, lock)): |
| public.ExecShell("rm -f {}/{}".format(path, lock)) |
|
|
| self.set_nodejs_version(get.nodejs_version).set_nodejs_bin().set_manager(manager).get_strict_ssl() |
| self.set_install_logs(get.project_name) |
| public.ExecShell("echo -n > {}".format(self.install_logs_file)) |
| public.ExecShell(self.set_strict_ssl) |
|
|
| get._ws.send(json.dumps(self.wsResult( |
| True, |
| "开始检查可用镜像源...", |
| code=1 |
| ))) |
|
|
| registry_name, registry_url = test_registry_url() |
| if registry_url is None: |
| get._ws.send(json.dumps(self.wsResult( |
| True, |
| "检测到镜像源不可用,这可能会导致后续安装执行失败!", |
| code=1 |
| ))) |
| else: |
| get._ws.send(json.dumps(self.wsResult( |
| True, |
| "检测到可用镜像源: {}".format(registry_name), |
| code=1 |
| ))) |
| public.ExecShell("{}/{} config set registry {}".format(self.nodejs_bin, self.manager, registry_url)) |
|
|
| command = self.get_install_cmd( |
| package_name=package_name, |
| is_global=is_global, |
| force=force, |
| check_update=check_update, |
| *args, **kwargs |
| ) |
|
|
| self.exec_logs(get, command, path, write_log=True) |
|
|
| get._ws.send(json.dumps(self.wsResult( |
| True, |
| "依赖包安装结束...如果项目启动失败,请检查安装日志!", |
| code=0 |
| ))) |
|
|