fix: 修正函数
This commit is contained in:
		
							parent
							
								
									bca3842ae6
								
							
						
					
					
						commit
						ed7ff945d3
					
				
							
								
								
									
										17
									
								
								app.js
								
								
								
								
							
							
						
						
									
										17
									
								
								app.js
								
								
								
								
							| 
						 | 
				
			
			@ -1 +1,16 @@
 | 
			
		|||
import './index.js'
 | 
			
		||||
import { execSync, spawn } from 'child_process'
 | 
			
		||||
execSync('tailwindcss -i ./src/input.css -o ./public/output.css')
 | 
			
		||||
const argv = [...process.argv].splice(2)
 | 
			
		||||
const argvs = argv.join(' ').replace(/(\S+\.js|\S+\.ts)/g, '')
 | 
			
		||||
const child = spawn(
 | 
			
		||||
  'node --no-warnings=ExperimentalWarning --loader ts-node/esm src/main.ts',
 | 
			
		||||
  argvs.split(' '),
 | 
			
		||||
  {
 | 
			
		||||
    shell: true,
 | 
			
		||||
    stdio: 'inherit'
 | 
			
		||||
  }
 | 
			
		||||
)
 | 
			
		||||
process.on('SIGINT', () => {
 | 
			
		||||
  if (child.pid) process.kill(child.pid)
 | 
			
		||||
  if (process.pid) process.exit()
 | 
			
		||||
})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,51 +0,0 @@
 | 
			
		|||
version: "3"
 | 
			
		||||
services:
 | 
			
		||||
  miao-yunzai:
 | 
			
		||||
    container_name: miao-yunzai
 | 
			
		||||
    build:                                                              # 使用 Dockerfile 本地构建
 | 
			
		||||
      context: ./docker
 | 
			
		||||
      args:
 | 
			
		||||
        BUNDLE_FFMPEG: 'false'                                            # 是否在构建时打包 ffmpeg
 | 
			
		||||
        BUNDLE_POETRY: 'false'                                            # 是否在构建时打包 poetry
 | 
			
		||||
        USE_APT_MIRROR: 'true'                                            # 是否在构建时使用 apt 镜像
 | 
			
		||||
        USE_NPM_MIRROR: 'true'                                            # 是否在构建时使用 npm 镜像
 | 
			
		||||
        USE_PYPI_MIRROR: 'true'                                           # 是否在构建时使用 pypi 镜像
 | 
			
		||||
    restart: always
 | 
			
		||||
    # ports:
 | 
			
		||||
    #   - "50831:50831"                                                 # 映射锅巴插件端口,格式"主机端口:容器内部端口"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./yunzai/config/:/app/Miao-Yunzai/config/config/                 # Bot基础配置文件
 | 
			
		||||
      - ./yunzai/genshin_config:/app/Miao-Yunzai/plugins/genshin/config  # 公共Cookie,云崽功能配置文件
 | 
			
		||||
      - ./yunzai/logs:/app/Miao-Yunzai/logs                              # 日志文件
 | 
			
		||||
      - ./yunzai/data:/app/Miao-Yunzai/data                              # 数据文件
 | 
			
		||||
      - ./yunzai/temp:/app/Miao-Yunzai/temp                              # 临时文件
 | 
			
		||||
      # 以下目录是插件目录,安装完插件后需要手动添加映射(如有其他插件请自行添加)
 | 
			
		||||
      # 映射格式:./yunzai/plugins/<插件目录名>:/app/Miao-Yunzai/plugins/<插件目录名>
 | 
			
		||||
      # - ./yunzai/plugins/example:/app/Miao-Yunzai/plugins/example                          # 单js插件目录
 | 
			
		||||
      - ./yunzai/plugins/miao-plugin:/app/Miao-Yunzai/plugins/miao-plugin                    # 默认映射喵喵插件
 | 
			
		||||
      # - ./yunzai/plugins/py-plugin:/app/Miao-Yunzai/plugins/py-plugin                      # 新py插件
 | 
			
		||||
      # - ./yunzai/plugins/xiaoyao-cvs-plugin:/app/Miao-Yunzai/plugins/xiaoyao-cvs-plugin    # 图鉴插件
 | 
			
		||||
      #### [警告] 受云崽架构和docker特性限制,使用锅巴插件安装的插件无法持久化,销毁容器后新安装的插件会消失,请谨慎使用 ####
 | 
			
		||||
      # - ./yunzai/plugins/Guoba-Plugin:/app/Miao-Yunzai/plugins/Guoba-Plugin                # 锅巴插件
 | 
			
		||||
    depends_on:
 | 
			
		||||
      redis: { condition: service_healthy }
 | 
			
		||||
    deploy:
 | 
			
		||||
      resources:
 | 
			
		||||
        limits:
 | 
			
		||||
          memory: 2G
 | 
			
		||||
 | 
			
		||||
  redis:
 | 
			
		||||
    container_name: miao-redis
 | 
			
		||||
    image: redis:alpine
 | 
			
		||||
    restart: always
 | 
			
		||||
    volumes:
 | 
			
		||||
      # 前往 https://download.redis.io/redis-stable/redis.conf 下载配置文件,放入 ./redis/config 文件夹中
 | 
			
		||||
      # - ./redis/config:/etc/redis/    # Redis配置文件
 | 
			
		||||
      - ./redis/data:/data
 | 
			
		||||
      - ./redis/logs:/logs
 | 
			
		||||
    # command: /etc/redis/redis.conf    # 取消注释以应用Redis配置文件
 | 
			
		||||
    healthcheck:
 | 
			
		||||
      test: [ "CMD", "redis-cli", "PING" ]
 | 
			
		||||
      start_period: 10s
 | 
			
		||||
      interval: 5s
 | 
			
		||||
      timeout: 1s
 | 
			
		||||
| 
						 | 
				
			
			@ -1,94 +0,0 @@
 | 
			
		|||
FROM busybox:latest AS resource
 | 
			
		||||
 | 
			
		||||
COPY docker-entrypoint.sh /res/entrypoint.sh
 | 
			
		||||
 | 
			
		||||
RUN dos2unix /res/entrypoint.sh \
 | 
			
		||||
    && chmod +x /res/entrypoint.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FROM node:lts-bullseye-slim AS runtime
 | 
			
		||||
 | 
			
		||||
ARG BUNDLE_FFMPEG true
 | 
			
		||||
ARG BUNDLE_POETRY true
 | 
			
		||||
ARG USE_APT_MIRROR true
 | 
			
		||||
ARG USE_NPM_MIRROR true
 | 
			
		||||
ARG USE_PYPI_MIRROR true
 | 
			
		||||
ARG REPO_URL https://gitee.com/yoimiya-kokomi/Miao-Yunzai.git
 | 
			
		||||
ARG REPO_BRANCH master
 | 
			
		||||
 | 
			
		||||
RUN export BUNDLE_FFMPEG=${BUNDLE_FFMPEG:-true} \
 | 
			
		||||
    && export BUNDLE_POETRY=${BUNDLE_POETRY:-true} \
 | 
			
		||||
    && export USE_APT_MIRROR=${USE_APT_MIRROR:-true} \
 | 
			
		||||
    && export USE_NPM_MIRROR=${USE_NPM_MIRROR:-true} \
 | 
			
		||||
    && export USE_PYPI_MIRROR=${USE_PYPI_MIRROR:-true} \
 | 
			
		||||
    \
 | 
			
		||||
    && ((test "$USE_APT_MIRROR"x = "true"x \
 | 
			
		||||
    && sed -i "s/deb.debian.org/mirrors.ustc.edu.cn/g" /etc/apt/sources.list) || true) \
 | 
			
		||||
    && apt-get update \
 | 
			
		||||
    && apt-get upgrade -y \
 | 
			
		||||
    && apt-get install -y wget xz-utils dos2unix \
 | 
			
		||||
    && ((test "$BUNDLE_FFMPEG"x = "true"x \
 | 
			
		||||
    && wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-$(dpkg --print-architecture)-static.tar.xz \
 | 
			
		||||
    && mkdir -p /res/ffmpeg \
 | 
			
		||||
    && tar -xvf ./ffmpeg-git-$(dpkg --print-architecture)-static.tar.xz -C /res/ffmpeg --strip-components 1 \
 | 
			
		||||
    && cp /res/ffmpeg/ffmpeg /usr/bin/ffmpeg \
 | 
			
		||||
    && cp /res/ffmpeg/ffprobe /usr/bin/ffprobe) || true) \
 | 
			
		||||
    \
 | 
			
		||||
    && apt-get update \
 | 
			
		||||
    && apt-get upgrade -y \
 | 
			
		||||
    && apt-get install -y curl wget gnupg git fonts-wqy-microhei xfonts-utils chromium fontconfig libxss1 libgl1 \
 | 
			
		||||
    && apt-get autoremove \
 | 
			
		||||
    && apt-get clean \
 | 
			
		||||
    \
 | 
			
		||||
    && fc-cache -f -v \
 | 
			
		||||
    \
 | 
			
		||||
    && git config --global --add safe.directory '*' \
 | 
			
		||||
    && git config --global pull.rebase false \
 | 
			
		||||
    && git config --global user.email "Yunzai@yunzai.bot" \
 | 
			
		||||
    && git config --global user.name "Yunzai" \
 | 
			
		||||
    \
 | 
			
		||||
    && _NPM_MIRROR_FLAG="" \
 | 
			
		||||
    && if [ "$USE_NPM_MIRROR"x = "true"x ]; then _NPM_MIRROR_FLAG="--registry=https://registry.npmmirror.com"; fi \
 | 
			
		||||
    && npm install pnpm -g $_NPM_MIRROR_FLAG \
 | 
			
		||||
    \
 | 
			
		||||
    && ((test "$BUNDLE_POETRY"x = "true"x \
 | 
			
		||||
    && apt-get update \
 | 
			
		||||
    && apt-get install -y python3-pip python3-venv \
 | 
			
		||||
    && apt-get autoremove \
 | 
			
		||||
    && apt-get clean \
 | 
			
		||||
    && ln -s /usr/bin/python3 /usr/bin/python \
 | 
			
		||||
    && POETRY_HOME=$HOME/venv-poetry \
 | 
			
		||||
    && python -m venv $POETRY_HOME \
 | 
			
		||||
    && _PYPI_MIRROR_FLAG="" \
 | 
			
		||||
    && if [ "$USE_PYPI_MIRROR"x = "true"x ]; then _PYPI_MIRROR_FLAG="-i https://pypi.tuna.tsinghua.edu.cn/simple"; fi \
 | 
			
		||||
    && $POETRY_HOME/bin/pip install --upgrade pip setuptools $_PYPI_MIRROR_FLAG \
 | 
			
		||||
    && $POETRY_HOME/bin/pip install poetry $_PYPI_MIRROR_FLAG \
 | 
			
		||||
    && ln -s $POETRY_HOME/bin/poetry /usr/bin \
 | 
			
		||||
    && poetry config virtualenvs.in-project true) || true) \
 | 
			
		||||
    \
 | 
			
		||||
    && rm -rf /var/cache/* \
 | 
			
		||||
    && rm -rf /tmp/*
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FROM runtime AS prod
 | 
			
		||||
 | 
			
		||||
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
 | 
			
		||||
    PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
 | 
			
		||||
 | 
			
		||||
RUN REPO_URL=${REPO_URL:-"https://gitee.com/yoimiya-kokomi/Miao-Yunzai.git"} \
 | 
			
		||||
    && REPO_BRANCH=${REPO_BRANCH:-master} \
 | 
			
		||||
    && USE_NPM_MIRROR=${USE_NPM_MIRROR:-true} \
 | 
			
		||||
    \
 | 
			
		||||
    && _NPM_MIRROR_FLAG="" \
 | 
			
		||||
    && if [ "$USE_NPM_MIRROR"x = "true"x ]; then _NPM_MIRROR_FLAG="--registry=https://registry.npmmirror.com"; fi \
 | 
			
		||||
    && git clone --depth=1 --branch $REPO_BRANCH $REPO_URL /app/Miao-Yunzai \
 | 
			
		||||
    && cd /app/Miao-Yunzai \
 | 
			
		||||
    && sed -i 's/127.0.0.1/redis/g' ./config/default_config/redis.yaml \
 | 
			
		||||
    && pnpm install -P $_NPM_MIRROR_FLAG \
 | 
			
		||||
    && git remote set-url origin https://gitee.com/yoimiya-kokomi/Miao-Yunzai.git
 | 
			
		||||
 | 
			
		||||
COPY --from=resource /res/entrypoint.sh /app/Miao-Yunzai/entrypoint.sh
 | 
			
		||||
 | 
			
		||||
WORKDIR /app/Miao-Yunzai
 | 
			
		||||
 | 
			
		||||
ENTRYPOINT ["/app/Miao-Yunzai/entrypoint.sh"]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,194 +0,0 @@
 | 
			
		|||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
set +e
 | 
			
		||||
 | 
			
		||||
GreenBG="\\033[42;37m"
 | 
			
		||||
YellowBG="\\033[43;37m"
 | 
			
		||||
BlueBG="\\033[44;37m"
 | 
			
		||||
Font="\\033[0m"
 | 
			
		||||
 | 
			
		||||
Version="${BlueBG}[版本]${Font}"
 | 
			
		||||
Info="${GreenBG}[信息]${Font}"
 | 
			
		||||
Warn="${YellowBG}[提示]${Font}"
 | 
			
		||||
 | 
			
		||||
WORK_DIR="/app/Miao-Yunzai"
 | 
			
		||||
MIAO_PLUGIN_PATH="/app/Miao-Yunzai/plugins/miao-plugin"
 | 
			
		||||
XIAOYAO_CVS_PATH="/app/Miao-Yunzai/plugins/xiaoyao-cvs-plugin"
 | 
			
		||||
PY_PLUGIN_PATH="/app/Miao-Yunzai/plugins/py-plugin"
 | 
			
		||||
 | 
			
		||||
if [[ ! -d "$HOME/.ovo" ]]; then
 | 
			
		||||
    mkdir ~/.ovo
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo -e "\n ================ \n ${Info} ${GreenBG} 拉取 Miao-Yunzai 更新 ${Font} \n ================ \n"
 | 
			
		||||
 | 
			
		||||
cd $WORK_DIR
 | 
			
		||||
 | 
			
		||||
if [[ -z $(git status -s) ]]; then
 | 
			
		||||
    echo -e " ${Warn} ${YellowBG} 当前工作区有修改,尝试暂存后更新。${Font}"
 | 
			
		||||
    git add .
 | 
			
		||||
    git stash
 | 
			
		||||
    git pull origin master --allow-unrelated-histories --rebase
 | 
			
		||||
    git stash pop
 | 
			
		||||
else
 | 
			
		||||
    git pull origin master --allow-unrelated-histories
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ ! -f "$HOME/.ovo/yunzai.ok" ]]; then
 | 
			
		||||
    set -e
 | 
			
		||||
    echo -e "\n ================ \n ${Info} ${GreenBG} 更新 Miao-Yunzai 运行依赖 ${Font} \n ================ \n"
 | 
			
		||||
    pnpm install -P
 | 
			
		||||
    touch ~/.ovo/yunzai.ok
 | 
			
		||||
    set +e
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo -e "\n ================ \n ${Version} ${BlueBG} Miao-Yunzai 版本信息 ${Font} \n ================ \n"
 | 
			
		||||
 | 
			
		||||
git log -1 --pretty=format:"%h - %an, %ar (%cd) : %s"
 | 
			
		||||
 | 
			
		||||
if [ ! -d $MIAO_PLUGIN_PATH"/.git" ]; then
 | 
			
		||||
    echo -e "\n ${Warn} ${YellowBG} 由于喵版云崽依赖miao-plugin,检测到目前没有安装,开始自动下载 ${Font} \n"
 | 
			
		||||
    git clone --depth=1 https://gitee.com/yoimiya-kokomi/miao-plugin.git ./plugins/miao-plugin/
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if [ -d $MIAO_PLUGIN_PATH"/.git" ]; then
 | 
			
		||||
 | 
			
		||||
    echo -e "\n ================ \n ${Info} ${GreenBG} 拉取 喵喵插件 更新 ${Font} \n ================ \n"
 | 
			
		||||
 | 
			
		||||
    cd $MIAO_PLUGIN_PATH
 | 
			
		||||
 | 
			
		||||
    if [[ -n $(git status -s) ]]; then
 | 
			
		||||
        echo -e " ${Warn} ${YellowBG} 当前工作区有修改,尝试暂存后更新。${Font}"
 | 
			
		||||
        git add .
 | 
			
		||||
        git stash
 | 
			
		||||
        git pull origin master --allow-unrelated-histories --rebase
 | 
			
		||||
        git stash pop
 | 
			
		||||
    else
 | 
			
		||||
        git pull origin master --allow-unrelated-histories
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ ! -f "$HOME/.ovo/miao.ok" ]]; then
 | 
			
		||||
        set -e
 | 
			
		||||
        echo -e "\n ================ \n ${Info} ${GreenBG} 更新 喵喵插件 运行依赖 ${Font} \n ================ \n"
 | 
			
		||||
        pnpm install -P
 | 
			
		||||
        touch ~/.ovo/miao.ok
 | 
			
		||||
        set +e
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    echo -e "\n ================ \n ${Version} ${BlueBG} 喵喵插件版本信息 ${Font} \n ================ \n"
 | 
			
		||||
    git log -1 --pretty=format:"%h - %an, %ar (%cd) : %s"
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -d $PY_PLUGIN_PATH"/.git" ]; then
 | 
			
		||||
 | 
			
		||||
    echo -e "\n ================ \n ${Info} ${GreenBG} 拉取 py-plugin 插件更新 ${Font} \n ================ \n"
 | 
			
		||||
 | 
			
		||||
    cd $PY_PLUGIN_PATH
 | 
			
		||||
 | 
			
		||||
    if [[ -n $(git status -s) ]]; then
 | 
			
		||||
        echo -e " ${Warn} ${YellowBG} 当前工作区有修改,尝试暂存后更新。${Font}"
 | 
			
		||||
        git add .
 | 
			
		||||
        git stash
 | 
			
		||||
        git pull origin v3 --allow-unrelated-histories --rebase
 | 
			
		||||
        git stash pop
 | 
			
		||||
    else
 | 
			
		||||
        git pull origin v3 --allow-unrelated-histories
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ ! -f "$HOME/.ovo/py.ok" ]]; then
 | 
			
		||||
        set -e
 | 
			
		||||
        echo -e "\n ================ \n ${Info} ${GreenBG} 更新 py-plugin 运行依赖 ${Font} \n ================ \n"
 | 
			
		||||
        pnpm install iconv-lite @grpc/grpc-js @grpc/proto-loader -w
 | 
			
		||||
        poetry config virtualenvs.in-project true
 | 
			
		||||
        poetry install
 | 
			
		||||
        touch ~/.ovo/py.ok
 | 
			
		||||
        set +e
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    echo -e "\n ================ \n ${Version} ${BlueBG} py-plugin 插件版本信息 ${Font} \n ================ \n"
 | 
			
		||||
 | 
			
		||||
    git log -1 --pretty=format:"%h - %an, %ar (%cd) : %s"
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -d $XIAOYAO_CVS_PATH"/.git" ]; then
 | 
			
		||||
 | 
			
		||||
    echo -e "\n ================ \n ${Info} ${GreenBG} 拉取 xiaoyao-cvs 插件更新 ${Font} \n ================ \n"
 | 
			
		||||
 | 
			
		||||
    cd $XIAOYAO_CVS_PATH
 | 
			
		||||
 | 
			
		||||
    if [[ -n $(git status -s) ]]; then
 | 
			
		||||
        echo -e " ${Warn} ${YellowBG} 当前工作区有修改,尝试暂存后更新。${Font}"
 | 
			
		||||
        git add .
 | 
			
		||||
        git stash
 | 
			
		||||
        git pull origin master --allow-unrelated-histories --rebase
 | 
			
		||||
        git stash pop
 | 
			
		||||
    else
 | 
			
		||||
        git pull origin master --allow-unrelated-histories
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ ! -f "$HOME/.ovo/xiaoyao.ok" ]]; then
 | 
			
		||||
        set -e
 | 
			
		||||
        echo -e "\n ================ \n ${Info} ${GreenBG} 更新 xiaoyao-cvs 插件运行依赖 ${Font} \n ================ \n"
 | 
			
		||||
        pnpm add promise-retry superagent -w
 | 
			
		||||
        touch ~/.ovo/xiaoyao.ok
 | 
			
		||||
        set +e
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    echo -e "\n ================ \n ${Version} ${BlueBG} xiaoyao-cvs 插件版本信息 ${Font} \n ================ \n"
 | 
			
		||||
 | 
			
		||||
    git log -1 --pretty=format:"%h - %an, %ar (%cd) : %s"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -d $GUOBA_PLUGIN_PATH"/.git" ]; then
 | 
			
		||||
 | 
			
		||||
    echo -e "\n ================ \n ${Info} ${GreenBG} 拉取 Guoba-Plugin 插件更新 ${Font} \n ================ \n"
 | 
			
		||||
 | 
			
		||||
    cd $GUOBA_PLUGIN_PATH
 | 
			
		||||
 | 
			
		||||
    if [[ -n $(git status -s) ]]; then
 | 
			
		||||
        echo -e " ${Warn} ${YellowBG} 当前工作区有修改,尝试暂存后更新。${Font}"
 | 
			
		||||
        git add .
 | 
			
		||||
        git stash
 | 
			
		||||
        git pull origin master --allow-unrelated-histories --rebase
 | 
			
		||||
        git stash pop
 | 
			
		||||
    else
 | 
			
		||||
        git pull origin master --allow-unrelated-histories
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [[ ! -f "$HOME/.ovo/guoba.ok" ]]; then
 | 
			
		||||
        set -e
 | 
			
		||||
        echo -e "\n ================ \n ${Info} ${GreenBG} 更新 Guoba-Plugin 插件运行依赖 ${Font} \n ================ \n"
 | 
			
		||||
        pnpm add multer body-parser jsonwebtoken -w
 | 
			
		||||
        touch ~/.ovo/guoba.ok
 | 
			
		||||
        set +e
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    echo -e "\n ================ \n ${Version} ${BlueBG} Guoba-Plugin 插件版本信息 ${Font} \n ================ \n"
 | 
			
		||||
 | 
			
		||||
    git log -1 --pretty=format:"%h - %an, %ar (%cd) : %s"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
cd $WORK_DIR
 | 
			
		||||
 | 
			
		||||
echo -e "\n ================ \n ${Info} ${GreenBG} 初始化 Docker 环境 ${Font} \n ================ \n"
 | 
			
		||||
 | 
			
		||||
if [ -f "./config/config/redis.yaml" ]; then
 | 
			
		||||
    sed -i 's/127.0.0.1/redis/g' ./config/config/redis.yaml
 | 
			
		||||
    echo -e "\n  修改Redis地址完成~  \n"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo -e "\n ================ \n ${Info} ${GreenBG} 启动 Miao-Yunzai ${Font} \n ================ \n"
 | 
			
		||||
 | 
			
		||||
set +e
 | 
			
		||||
node app
 | 
			
		||||
EXIT_CODE=$?
 | 
			
		||||
 | 
			
		||||
if [[ $EXIT_CODE != 0 ]]; then
 | 
			
		||||
	echo -e "\n ================ \n ${Warn} ${YellowBG} 启动 Miao-Yunzai 失败 ${Font} \n ================ \n"
 | 
			
		||||
	tail -f /dev/null
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										4
									
								
								image.js
								
								
								
								
							
							
						
						
									
										4
									
								
								image.js
								
								
								
								
							| 
						 | 
				
			
			@ -1,6 +1,4 @@
 | 
			
		|||
import { spawn } from 'child_process'
 | 
			
		||||
const argv = [...process.argv].splice(2)
 | 
			
		||||
const argvs = argv.join(' ').replace(/(\S+\.js|\S+\.ts)/g, '')
 | 
			
		||||
const child1 = spawn(
 | 
			
		||||
  'tailwindcss -i ./src/input.css -o ./public/output.css --watch',
 | 
			
		||||
  [],
 | 
			
		||||
| 
						 | 
				
			
			@ -9,6 +7,8 @@ const child1 = spawn(
 | 
			
		|||
    stdio: 'inherit'
 | 
			
		||||
  }
 | 
			
		||||
)
 | 
			
		||||
const argv = [...process.argv].splice(2)
 | 
			
		||||
const argvs = argv.join(' ').replace(/(\S+\.js|\S+\.ts)/g, '')
 | 
			
		||||
const child2 = spawn(
 | 
			
		||||
  'node --no-warnings=ExperimentalWarning --loader ts-node/esm src/server.ts',
 | 
			
		||||
  argvs.split(' '),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										16
									
								
								index.js
								
								
								
								
							
							
						
						
									
										16
									
								
								index.js
								
								
								
								
							| 
						 | 
				
			
			@ -1,16 +0,0 @@
 | 
			
		|||
import { execSync, spawn } from 'child_process'
 | 
			
		||||
const argv = [...process.argv].splice(2)
 | 
			
		||||
const argvs = argv.join(' ').replace(/(\S+\.js|\S+\.ts)/g, '')
 | 
			
		||||
execSync('tailwindcss -i ./src/input.css -o ./public/output.css')
 | 
			
		||||
const child = spawn(
 | 
			
		||||
  'node --no-warnings=ExperimentalWarning --loader ts-node/esm src/main.ts',
 | 
			
		||||
  argvs.split(' '),
 | 
			
		||||
  {
 | 
			
		||||
    shell: true,
 | 
			
		||||
    stdio: 'inherit'
 | 
			
		||||
  }
 | 
			
		||||
)
 | 
			
		||||
process.on('SIGINT', () => {
 | 
			
		||||
  if (child.pid) process.kill(child.pid)
 | 
			
		||||
  if (process.pid) process.exit()
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										19
									
								
								package.json
								
								
								
								
							
							
						
						
									
										19
									
								
								package.json
								
								
								
								
							| 
						 | 
				
			
			@ -3,10 +3,11 @@
 | 
			
		|||
  "version": "4.0.0-rc.0",
 | 
			
		||||
  "author": "Yoimiya-Kokomi, Le-niao",
 | 
			
		||||
  "description": "QQ Group Bot",
 | 
			
		||||
  "main": "./index.js",
 | 
			
		||||
  "main": "./app.js",
 | 
			
		||||
  "type": "module",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "app": "node index.js",
 | 
			
		||||
    "app": "node app.js",
 | 
			
		||||
    "dev": "ts-node-dev src/main.ts",
 | 
			
		||||
    "login": "node index.js login",
 | 
			
		||||
    "build": "rollup --config rollup.config.js",
 | 
			
		||||
    "start": "pm2 startOrRestart pm2.config.cjs",
 | 
			
		||||
| 
						 | 
				
			
			@ -22,17 +23,18 @@
 | 
			
		|||
    "prepare": "husky"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@loadable/component": "^5.16.4",
 | 
			
		||||
    "art-template": "^4.13.2",
 | 
			
		||||
    "chalk": "^5.3.0",
 | 
			
		||||
    "chokidar": "^3.6.0",
 | 
			
		||||
    "express": "^4.19.2",
 | 
			
		||||
    "express-art-template": "^1.0.1",
 | 
			
		||||
    "dotenv": "^16.4.5",
 | 
			
		||||
    "https-proxy-agent": "7.0.4",
 | 
			
		||||
    "icqq": "^0.6.10",
 | 
			
		||||
    "image-size": "^1.1.1",
 | 
			
		||||
    "inquirer": "^9.2.16",
 | 
			
		||||
    "koa": "^2.15.3",
 | 
			
		||||
    "koa-mount": "^4.0.0",
 | 
			
		||||
    "koa-router": "^12.0.1",
 | 
			
		||||
    "koa-static": "^5.0.0",
 | 
			
		||||
    "lodash": "^4.17.21",
 | 
			
		||||
    "log4js": "^6.9.1",
 | 
			
		||||
    "md5": "^2.3.0",
 | 
			
		||||
| 
						 | 
				
			
			@ -71,16 +73,13 @@
 | 
			
		|||
    "eslint-plugin-n": "^16.6.2",
 | 
			
		||||
    "eslint-plugin-promise": "^6.1.1",
 | 
			
		||||
    "husky": "^9.0.11",
 | 
			
		||||
    "koa": "^2.15.3",
 | 
			
		||||
    "koa-router": "^12.0.1",
 | 
			
		||||
    "koa-static": "^5.0.0",
 | 
			
		||||
    "nodemon": "^3.0.1",
 | 
			
		||||
    "preline": "^2.3.0",
 | 
			
		||||
    "prettier": "^3.0.3",
 | 
			
		||||
    "rollup": "^4.16.4",
 | 
			
		||||
    "tailwindcss": "^3.4.3",
 | 
			
		||||
    "ts-node": "^10.9.1",
 | 
			
		||||
    "typescript": "^5.0.4"
 | 
			
		||||
    "ts-node": "^10.9.2",
 | 
			
		||||
    "typescript": "^5.4.5"
 | 
			
		||||
  },
 | 
			
		||||
  "exports": {
 | 
			
		||||
    "./config": {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@ module.exports = {
 | 
			
		|||
  apps: [
 | 
			
		||||
    {
 | 
			
		||||
      name: 'Miao-Yunzai',
 | 
			
		||||
      script: './index.js',
 | 
			
		||||
      script: './app.js',
 | 
			
		||||
      args: argv,
 | 
			
		||||
      // 超时时间内进程仍未终止,则 PM2 将强制终止该进程
 | 
			
		||||
      kill_timeout: 5000,
 | 
			
		||||
| 
						 | 
				
			
			@ -20,7 +20,9 @@ module.exports = {
 | 
			
		|||
      // 不监听文件变化
 | 
			
		||||
      watch: false,
 | 
			
		||||
      env: {
 | 
			
		||||
        // 生产环境
 | 
			
		||||
        NODE_ENV: 'production'
 | 
			
		||||
        // 此环境变量,都称之为开发环境
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,4 @@
 | 
			
		|||
import { configDotenv } from 'dotenv'
 | 
			
		||||
configDotenv({
 | 
			
		||||
  path: '.env'
 | 
			
		||||
})
 | 
			
		||||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
import './env.js'
 | 
			
		||||
import './require.js'
 | 
			
		||||
import './config.js'
 | 
			
		||||
import './logger.js'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,6 @@ const now = () => `?t=${Date.now()}`
 | 
			
		|||
 | 
			
		||||
/**
 | 
			
		||||
 * @param basePath import.meta.url
 | 
			
		||||
 * @param T 默认开启动态,可自定设置系统量关闭
 | 
			
		||||
 * @returns
 | 
			
		||||
 * ***********
 | 
			
		||||
 * 创建动态模块
 | 
			
		||||
| 
						 | 
				
			
			@ -36,17 +35,20 @@ const now = () => `?t=${Date.now()}`
 | 
			
		|||
 * 如果动态模块内包含动态模块,
 | 
			
		||||
 * 内部模块也会跟着重新加载,
 | 
			
		||||
 * ***********
 | 
			
		||||
 * 请确保你的模块是可预测
 | 
			
		||||
 * ***********
 | 
			
		||||
 * 请确保当前模块是可被执行的
 | 
			
		||||
 * 在env.NODE_ENV=='production'下禁用
 | 
			
		||||
 * @deprecated 实验性的,请勿烂用
 | 
			
		||||
 */
 | 
			
		||||
export const createDynamic = (basePath: string, T = true) => {
 | 
			
		||||
export const createDynamic = (basePath: string) => {
 | 
			
		||||
  /**
 | 
			
		||||
   * 与import作用相同
 | 
			
		||||
   * @param path 相对路径
 | 
			
		||||
   * @param TT 默认开启动态,可自定设置系统量关闭
 | 
			
		||||
   * @returns
 | 
			
		||||
   */
 | 
			
		||||
  return (path: string, TT = true) =>
 | 
			
		||||
    import(new URL(`${path}${TT && T ? now() : ''}`, basePath).href)
 | 
			
		||||
  return (path: string) =>
 | 
			
		||||
    import(
 | 
			
		||||
      new URL(
 | 
			
		||||
        `${path}${process.env.NODE_ENV == 'NODE_ENV' ? '' : now()}`,
 | 
			
		||||
        basePath
 | 
			
		||||
      ).href
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue