Files
cat-catch/justfile
ChuXun 53f9554f38 1
2025-10-19 20:55:27 +08:00

125 lines
4.5 KiB
Makefile
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 构建脚本crx
# 设置默认shell为bash
set shell := ["bash", "-c"]
# 默认任务:显示帮助
default:
@just --list
# 安装依赖
install:
npm install
npm install -g crx3
# 清理构建目录
clean:
rm -rf build dist web-ext-artifacts
rm -f *.crx *.zip private-key.pem
# 验证manifest文件
validate:
@echo "验证 manifest.json..."
@node -e "const manifest = require('./manifest.json'); console.log('Extension name:', manifest.name); console.log('Version:', manifest.version); if (!manifest.manifest_version || !manifest.name || !manifest.version) { throw new Error('Invalid manifest.json'); }"
# 准备构建目录
prepare: validate
@echo "准备构建目录..."
mkdir -p build
cp -r ./{catch-script,css,img,js,lib,_locales} build/
cp -r ./*.{js,html} build/
@echo "✅ 文件复制完成"
# 检查图标文件
check-icons:
@echo "检查图标文件..."
@if [ ! -d "img" ]; then echo "❌ img/ 目录不存在"; exit 1; fi
@if [ ! -f "img/icon.png" ]; then echo "❌ 缺少图标: img/icon.png"; exit 1; fi
@if [ ! -f "img/icon128.png" ]; then echo "❌ 缺少图标: img/icon128.png"; exit 1; fi
@echo "✅ 所有图标文件存在"
# 生成私钥
generate-key:
@echo "生成私钥..."
@if [ ! -f "private-key.pem" ]; then \
openssl genrsa -out private-key.pem 2048; \
echo "✅ 私钥已生成"; \
else \
echo "✅ 私钥已存在"; \
fi
# 构建ZIP文件
build-zip: prepare check-icons
@echo "构建 ZIP 文件..."
@cd build && \
VERSION=$(node -p "require('./manifest.json').version") && \
zip -r "../cat-catch${VERSION}.zip" . && \
echo "✅ ZIP 文件已生成: cat-catch${VERSION}.zip"
# 构建CRX文件
build-crx: prepare check-icons generate-key
@echo "构建 CRX 文件..."
@VERSION=$(node -p "require('./manifest.json').version") && \
crx3 -p private-key.pem -o "cat-catch${VERSION}.crx" build/ && \
echo "✅ CRX 文件已生成: cat-catch${VERSION}.crx"
# 快速构建仅ZIP
quick: build-zip
@echo "🚀 快速构建完成!"
# 完整构建CRX + ZIP
build: build-crx build-zip
@echo "🎉 构建完成!"
@ls -la *.crx *.zip 2>/dev/null || true
# 开发模式 - 自动重载
dev-watch: prepare
@echo "🔄 开发模式 - 自动构建"
@echo "================================"
@echo "监听文件变化并自动重新构建到 build/ 目录"
@echo "请在Chrome中加载 build/ 目录,然后刷新扩展"
@echo ""
@if command -v inotifywait >/dev/null 2>&1; then \
while true; do \
inotifywait -r -e modify,create,delete src/ && \
echo "🔄 检测到文件变化,重新构建..." && \
just prepare; \
done \
else \
echo "❌ 需要安装 inotify-tools: sudo apt install inotify-tools"; \
fi
# 检查扩展
lint:
@echo "检查扩展..."
@echo "验证 manifest.json 格式..."
@node -e "const manifest = require('./manifest.json'); console.log('✅ Manifest 格式正确'); console.log('扩展名:', manifest.name); console.log('版本:', manifest.version);"
@echo "检查必需文件..."
@if [ -f "popup.html" ]; then echo "✅ popup.html 存在"; else echo "❌ popup.html 缺失"; fi
@if [ -f "options.html" ]; then echo "✅ options.html 存在"; else echo "❌ options.html 缺失"; fi
@if [ -f "js/background.js" ]; then echo "✅ background.js 存在"; else echo "❌ background.js 缺失"; fi
@if [ -f "js/content-script.js" ]; then echo "✅ content.js 存在"; else echo "❌ content.js 缺失"; fi
@if [ -f "js/popup.js" ]; then echo "✅ popup.js 存在"; else echo "❌ popup.js 缺失"; fi
@if [ -f "js/options.js" ]; then echo "✅ options.js 存在"; else echo "❌ options.js 缺失"; fi
@echo "✅ Chrome扩展检查完成"
# 显示版本信息
version:
@node -p "'当前版本: ' + require('./manifest.json').version"
# 显示项目状态
status:
@echo "📊 项目状态:"
@node -p "'版本: ' + require('./manifest.json').version"
@echo "图标状态:"
@if [ -f "img/icon.png" ]; then echo " ✅ img/icon.png"; else echo " ❌ img/icon.png"; fi
@if [ -f "img/icon128.png" ]; then echo " ✅ img/icon128.png"; else echo " ❌ img/icon128.png"; fi
@echo "构建文件:"
@ls -la *.crx *.zip 2>/dev/null || echo " 无构建文件"
# 完整的发布流程
release: clean install validate build
@echo "🎉 发布包已准备完成!"
@echo "文件列表:"
@ls -la *.crx *.zip