开发设置
先决条件
- Docker / Docker Compose
- Node.js(参见
engines.node中的package.json) - pnpm(参见
engines.pnpm/packageManager中的package.json) - SQLite3
- Inkscape(用于文档 SVG 翻译和 PNG 导出;仅在运行
translate或translate:svg时需要) - bat/batcat(用于显示漂亮的
translate:help版本) - direnv(用于自动加载
.env*文件) - Playwright Chromium(在
pnpm install后运行pnpm take-screenshots:install;这将运行playwright install chromium)
步骤
1. 克隆仓库:
git clone https://github.com/wsj-br/duplistatus.git
cd duplistatus
2. 安装依赖项(Debian/Ubuntu):
sudo apt update
sudo apt install sqlite3 git inkscape bat -y
sudo apt install -y build-essential python3 python3-dev python3-setuptools make g++ gcc pkg-config
3. 删除旧的 Node.js 安装(如果已安装)
sudo apt-get purge nodejs npm -y
sudo apt-get autoremove -y
sudo rm -rf /usr/local/bin/npm
sudo rm -rf /usr/local/share/man/man1/node*
sudo rm -rf /usr/local/lib/dtrace/node.d
rm -rf ~/.npm
rm -rf ~/.node-gyp
sudo rm -rf /opt/local/bin/node
sudo rm -rf /opt/local/include/node
sudo rm -rf /opt/local/lib/node_modules
sudo rm -rf /usr/local/lib/node*
sudo rm -rf /usr/local/include/node*
sudo rm -rf /usr/local/bin/node*
4. 安装 Node.js 和 pnpm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
npm config set allow-scripts=pnpm --location=user
npm install -g pnpm npm-check-updates doctoc
5. 设置 direnv 支持
将这些行添加到您的 ~/.bashrc 文件中
# direnv support (apt install direnv)
eval "$(direnv hook bash)"
使用此命令:
(echo "# direnv support (apt install direnv)"; echo 'eval "$(direnv hook bash)') >> ~/.bashrc
在仓库基础目录中运行:
direnv allow
将这些行添加到您的 ~/.profile 文件中
# export the Bash environment (needed for code editor or AI Agents to load it).
export BASH_ENV="$HOME/.bashrc"
使用此命令:
(echo "# export the Bash environment (needed for code editor or AI Agents to load it)."; \
echo 'export BASH_ENV="$HOME/.bashrc"') >> ~/.profile
信息
您需要重新打开终端或可能需要关闭/重新打开代码编辑器 IDE(Visual Studio Code、 Cursor、Lingma、Antigravity、Zed,...),以便使这些更改生效。
6. 在仓库基础目录创建包含这些变量的 .env 文件。
-
您可以为
VERSION使用任何值;使用开发脚本时它将自动更新。 -
为
ADMIN_PASSWORD和USER_PASSWORD使用随机密码;这些密码将在pnpm take-screenshots脚本中使用。 -
您可以从 openrouter.ai 获取
OPENROUTER_API_KEY。VERSION=x.x.x# Development user passwordsADMIN_PASSWORD="admin_secret"USER_PASSWORD="user_secret"# Openrouter.ai API key for translation scripts in documentationOPENROUTER_API_KEY=sk-or-v1-your-key-for-translate-files
可用脚本
项目包含几个用于不同开发任务的 npm 脚本:
开发脚本
pnpm dev- 同时启动 Next.js 开发服务器(端口 8666)和 cron 服务(端口 8667),通过concurrently运行(包含预检查)。按 CTRL-C 可停止两者。Next.js 的NODE_OPTIONS加载scripts/dev-preload.cjs,应用scripts/peer-ip.cjs(IP 白名单的 TCP 对等地址)和请求日志时间戳。pnpm dev:next- 仅在端口 8666 上启动 Next.js 开发服务器(无 cron)。pnpm build- 构建用于生产的应用程序(包含预检查)pnpm lint- 运行 ESLint 检查代码质量pnpm typecheck- 运行 TypeScript 类型检查scripts/upgrade-dependencies.sh— 安全构建升级所有工作区包(自动检测)。使用npm-check-updates解析最新版本,在工作区根目录安装,并且只保留能通过每个包的typecheck/lint的升级(对等门钉住eslint/typescript当 lint 栈不允许最新的主要版本时)。然后运行pnpm audit/audit --fix并强制应用(并报告)任何需要代码更改的安全修复。刷新工作区锁定文件和 browserslist。建议使用source ./scripts/upgrade-dependencies.sh以便 nvm 应用于您的 shell;在 CI 或自动化中直接执行文件时使用CI=1或UPGRADE_ALLOW_EXEC=1。另请参见仅限 Node/pnpm 工具的scripts/upgrade-tools.sh。scripts/clean-workspace.sh- 清理工作区pnpm i18n:tools --local/--remote— 链接同级ai-i18n-tools检出或恢复最新的 npm 包(scripts/link-ai-i18n-tools.sh)。请勿提交link:说明符。
注意: preinstall 脚本会自动强制使用 pnpm 作为包管理器。
文档脚本
这些脚本必须从 documentation/ 目录运行:
pnpm start- 在生产模式下构建并提供文档站点(默认端口 3000)pnpm start:en- 以英语启动文档开发服务器(启用热重载)pnpm start:fr- 以法语区域设置启动文档开发服务器(启用热重载)pnpm start:de- 以德语区域设置启动文档开发服务器(启用热重载)pnpm start:es- 以西班牙语区域设置启动文档开发服务器(启用热重载)pnpm start:pt-br- 以葡萄牙语(巴西)区域设置启动文档开发服务器(启用热重载)pnpm build- 为生产构建文档站点pnpm write-translations- 从文档中提取可翻译字符串pnpm translate- 使用 AI 翻译文档文件(参见翻译工作流程)pnpm lint- 对文档源文件运行 ESLint
开发服务器(start:*)提供快速开发的热模块替换。默认端口是 3000。
生产脚本
pnpm build-local- 构建并准备本地生产环境(包括预检查,将静态文件复制到独立目录)pnpm start-local- 在本地启动生产服务器(端口 8666,包括预检查)。注意: 先运行pnpm build-local。使用--require ./scripts/peer-ip.cjs启动独立服务器。pnpm start- 使用相同的 peer-ip 预加载启动生产服务器(端口 9666)。Docker 使用docker-entrypoint.sh来加载相同脚本。
Docker 脚本
pnpm docker:up- 启动 Docker Compose 堆栈pnpm docker:down- 停止 Docker Compose 堆栈pnpm docker:clean- 清理 Docker 环境和缓存pnpm docker:devel- 构建标记为wsj-br/duplistatus:devel的开发 Docker 镜像
Cron 服务脚本
pnpm cron:start- 在生产模式下启动 cron 服务pnpm cron:dev- 在开发模式下启动仅 cron 服务并启用文件监视(端口 8667)。通常在使用pnpm dev时不需要,因为它已经启动了 cron。pnpm cron:start-local- 在本地启动 cron 服务进行测试(端口 8667)
测试脚本
pnpm generate-test-data- 生成测试备份数据(需要 --servers=N 参数)pnpm validate-csv-export- 验证 CSV 导出功能pnpm test-entrypoint- 在本地开发中测试 Docker 入口点脚本(参见测试脚本)pnpm take-screenshots- 为文档截取屏幕截图(参见文档工具)
逾期检查、cron 健康检查和 SMTP 测试通过正在运行的应用程序和 curl 进行(参见测试脚本);旧的独立 pnpm 辅助工具已被移除。