自动安装依赖包的脚本怎么写

wen 实用脚本 2

我来帮你写一个自动安装依赖包的脚本,以下提供几种常见场景的脚本:

自动安装依赖包的脚本怎么写

Python 项目依赖安装脚本

#!/bin/bash
# install_python_deps.sh
# 设置错误时退出
set -e
echo "====== Python 依赖安装脚本 ======"
# 检查 Python 是否安装
if ! command -v python3 &> /dev/null; then
    echo "错误: 未找到 Python3"
    exit 1
fi
# 检查 pip 是否安装
if ! command -v pip3 &> /dev/null; then
    echo "安装 pip..."
    python3 -m ensurepip --upgrade
fi
# 检查虚拟环境
if [ ! -d "venv" ]; then
    echo "创建虚拟环境..."
    python3 -m venv venv
fi
# 激活虚拟环境
source venv/bin/activate
# 升级 pip
echo "升级 pip..."
pip install --upgrade pip
# 安装依赖
if [ -f "requirements.txt" ]; then
    echo "从 requirements.txt 安装依赖..."
    pip install -r requirements.txt
else
    echo "未找到 requirements.txt,安装默认包..."
    pip install numpy pandas requests flask
fi
# 安装开发依赖(可选)
if [ -f "requirements-dev.txt" ]; then
    echo "安装开发依赖..."
    pip install -r requirements-dev.txt
fi
echo "====== 依赖安装完成 ======"

Node.js (npm) 项目依赖安装脚本

#!/bin/bash
# install_node_deps.sh
set -e
echo "====== Node.js 依赖安装脚本 ======"
# 检查 Node.js 是否安装
if ! command -v node &> /dev/null; then
    echo "错误: 未找到 Node.js"
    exit 1
fi
# 检查 npm 是否安装
if ! command -v npm &> /dev/null; then
    echo "错误: 未找到 npm"
    exit 1
fi
# 显示版本信息
echo "Node.js 版本: $(node --version)"
echo "npm 版本: $(npm --version)"
# 检查 package.json 是否存在
if [ ! -f "package.json" ]; then
    echo "初始化 npm 项目..."
    npm init -y
fi
# 安装依赖
echo "安装生产依赖..."
npm install --production
# 安装开发依赖(如果需要)
if [ -f "package.json" ]; then
    echo "安装开发依赖..."
    npm install --dev
fi
# 清理 npm 缓存(可选)
# npm cache clean --force
echo "====== 依赖安装完成 ======"

通用依赖安装脚本(支持多语言)

#!/bin/bash
# auto_install_deps.sh
set -e
# 检测项目类型
detect_project_type() {
    if [ -f "requirements.txt" ] || [ -f "pyproject.toml" ]; then
        echo "python"
    elif [ -f "package.json" ]; then
        echo "node"
    elif [ -f "Gemfile" ]; then
        echo "ruby"
    elif [ -f "composer.json" ]; then
        echo "php"
    elif [ -f "go.mod" ]; then
        echo "go"
    else
        echo "unknown"
    fi
}
# 安装 Python 依赖
install_python() {
    echo "检测到 Python 项目..."
    if [ ! -d "venv" ]; then
        python3 -m venv venv
    fi
    source venv/bin/activate
    pip install --upgrade pip
    if [ -f "requirements.txt" ]; then
        pip install -r requirements.txt
    fi
    if [ -f "pyproject.toml" ]; then
        pip install -e .
    fi
}
# 安装 Node.js 依赖
install_node() {
    echo "检测到 Node.js 项目..."
    npm install
    if [ -f "yarn.lock" ]; then
        yarn install
    elif [ -f "pnpm-lock.yaml" ]; then
        pnpm install
    fi
}
# 安装 Ruby 依赖
install_ruby() {
    echo "检测到 Ruby 项目..."
    bundle install
}
# 安装 PHP 依赖
install_php() {
    echo "检测到 PHP 项目..."
    composer install
}
# 安装 Go 依赖
install_go() {
    echo "检测到 Go 项目..."
    go mod download
    go mod tidy
}
# 主函数
main() {
    echo "====== 自动依赖安装工具 ======"
    # 检查操作系统
    OS=$(uname -s)
    echo "操作系统: $OS"
    # 检测项目类型
    PROJECT_TYPE=$(detect_project_type)
    echo "项目类型: $PROJECT_TYPE"
    # 根据项目类型安装依赖
    case $PROJECT_TYPE in
        python)
            install_python
            ;;
        node)
            install_node
            ;;
        ruby)
            install_ruby
            ;;
        php)
            install_php
            ;;
        go)
            install_go
            ;;
        *)
            echo "无法识别的项目类型"
            exit 1
            ;;
    esac
    echo "====== 依赖安装完成 ======"
}
# 执行主函数
main

带参数的高级版本

#!/bin/bash
# advanced_install.sh
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
    echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
    echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}
# 帮助信息
show_help() {
    echo "用法: ./install.sh [选项]"
    echo "选项:"
    echo "  -h, --help        显示帮助信息"
    echo "  -p, --python     安装 Python 依赖"
    echo "  -n, --node       安装 Node.js 依赖"
    echo "  -a, --all        安装所有依赖"
    echo "  -d, --dev        安装开发依赖"
}
# 检查环境
check_environment() {
    if [ ! -f "package.json" ] && [ ! -f "requirements.txt" ]; then
        log_error "未找到 package.json 或 requirements.txt"
        exit 1
    fi
}
# 安装 Python 依赖
install_python_deps() {
    log_info "安装 Python 依赖..."
    # 创建虚拟环境
    if [ ! -d "venv" ]; then
        python3 -m venv venv
        log_info "虚拟环境已创建"
    fi
    # 激活虚拟环境
    source venv/bin/activate
    # 安装依赖
    if [ -f "requirements.txt" ]; then
        pip install -r requirements.txt
        if [ "$DEV_MODE" = true ] && [ -f "requirements-dev.txt" ]; then
            pip install -r requirements-dev.txt
        fi
    fi
    log_info "Python 依赖安装完成"
}
# 安装 Node.js 依赖
install_node_deps() {
    log_info "安装 Node.js 依赖..."
    # 安装依赖
    npm install
    # 开发模式
    if [ "$DEV_MODE" = true ]; then
        npm install --dev
    fi
    log_info "Node.js 依赖安装完成"
}
# 主执行流程
main() {
    DEV_MODE=false
    INSTALL_PYTHON=false
    INSTALL_NODE=false
    # 解析参数
    while [[ $# -gt 0 ]]; do
        case $1 in
            -h|--help)
                show_help
                exit 0
                ;;
            -p|--python)
                INSTALL_PYTHON=true
                shift
                ;;
            -n|--node)
                INSTALL_NODE=true
                shift
                ;;
            -a|--all)
                INSTALL_PYTHON=true
                INSTALL_NODE=true
                shift
                ;;
            -d|--dev)
                DEV_MODE=true
                shift
                ;;
            *)
                log_error "未知选项: $1"
                show_help
                exit 1
                ;;
        esac
    done
    # 检查环境
    check_environment
    # 安装依赖
    if [ "$INSTALL_PYTHON" = true ] && [ -f "requirements.txt" ]; then
        install_python_deps
    fi
    if [ "$INSTALL_NODE" = true ] && [ -f "package.json" ]; then
        install_node_deps
    fi
    # 如果没有指定安装类型,自动检测
    if [ "$INSTALL_PYTHON" = false ] && [ "$INSTALL_NODE" = false ]; then
        log_warn "未指定安装类型,自动检测..."
        if [ -f "requirements.txt" ]; then
            install_python_deps
        fi
        if [ -f "package.json" ]; then
            install_node_deps
        fi
    fi
    log_info "所有依赖安装完成!"
}
# 执行主函数
main "$@"

使用说明

  1. 创建脚本文件

    # 创建脚本
    touch install_deps.sh
    # 编辑脚本(将上述代码复制进去)
    # 赋予执行权限
    chmod +x install_deps.sh
  2. 执行脚本

    # 基本用法
    ./install_deps.sh

带参数

./install_deps.sh -a -d # 安装所有依赖,包括开发依赖


3. **示例使用场景**:
```bash
# Python 项目
pip freeze > requirements.txt  # 生成依赖文件
./install_deps.sh              # 自动安装
# Node.js 项目
npm init -y                    # 初始化
./install_deps.sh              # 自动安装

这些脚本会根据项目的配置文件自动检测并安装所需的依赖包,可以满足大多数项目的需求,根据需要选择或修改适合你的脚本。

抱歉,评论功能暂时关闭!