定制 luguohuakai/packme 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

luguohuakai/packme

Composer 安装命令:

composer require luguohuakai/packme

包简介

packing code to tar.gz

README 文档

README

序言

作为研发: 你是否开发完一个功能还在将变更文件一个一个地找出来打包, 然后写一个更新文档, 告诉一线人员该如何替换文件, 升级了哪些功能

作为一线: 你是否还在一个一个地往服务器上替换研发给你的文件, 有时候文件太多还很容易出错, 做完这些事情之后还没有文档记录, 而一旦出错还要去一个文件一个文件的去恢复

PACKME就是为了解决这些恼人问题, 提升开发愉悦感的小工具, 无论研发还是一线都只需一键执行即可完成打包和部署

composer require --dev luguohuakai/packme:~1.0.0

环境依赖: php>=7.4/git/zippy

packme

注意: 项目必须使用Git进行管理
注意: 项目中尽量不要出现中文路径和文件名, 否则打包时可能会出现问题

请在需要打包的项目根目录执行

  • Windows: .\vendor\bin\packme.bat
  • Linux: php vendor/bin/packme
Please select packaging method:
      # 全量打包(默认) 可选是否打包vendor目录
      # 全量打包首次运行会在项目根目录下生成dist/version.ini
      # 全量打包时version.ini会自动打包进项目根目录
      [1]: Full packaging
      # 打包最近一次提交和当前未提交的文件
      [2]: Pack the most recently commit and currently not commit files
      # 打包某两次提交的差异文件(需要输入两次提交的commit id 短hash)
      # 注意: 打包差异文件不包括old_commit_id的文件, 包括new_commit_id的文件
      [3]: Pack the difference files commit between two times
      # 打包当前已修改但未提交的文件(注意: 如果当前没有修改的文件会进行全量打包)
      [4]: Pack files that have been modified but not yet commit
      # 打包最近一次提交的文件
      [5]: Pack the most recently commit files
      # 打包最近两次提交的文件
      [6]: Pack the last two commit files
      # 打包指定的一次提交
      [7]: Pack the specified one-time commit
      # 打包指定分支 默认为当前分支 (打包从分支创建到当前最新commit的变更文件)
      [8]: Pack specified branch
      # 打包指定目录(注意:不要出现中文路径或文件名)
      [9]: Pack specified path
 Your choice (default [5]): 
  • 打包产物将生成于./dist/目录下

  • 注意: 全量打包时, 若选择打包vendor目录将花费较长时间, 请耐心等待

  • 同时还可能生成./dist/version.ini, 用于记录版本信息

  • 大版本更新方式: 只需打包前手动修改./dist/version.ini中大版本就行, 如:将V1.0修改为V2.1

  • 支持在./dist/目录下编写changes.txt说明文档, changes.txt会被自动打包, 打包时会自动向文档追加提交信息和变更的文件路径

  • ./dist/changes.txt如果没有, 需要自行创建

测试

  • 在项目根目录执行: composer test
  • 当前集成测试会真实创建临时 Git 项目并执行 packme / replaceme 主流程
  • 依赖本机已安装: composer git tar gzip php

更新迭代计划

packme: 打包模式 9 需支持打包绝对路径: 如: D:\PhpstormProjects\path\to\project 或者 /Users/xx/path/to/project packme: 打包模式 3 如果直接回车不输入 commit id,可以默认取当前分支最新一次提交

已知问题

1. 文件名存在中文时打包出错,可能是本地环境配置问题
执行以下命令:
git config --global core.quotepath false
git config --global core.assumeunicode true

2. 打包没有文件变更的提交(只有文件删除)时会进行全量打包
修复方案 无文件变更时停止打包

3. 新增文件,然后选择[4]进行打包会报错 如:
Please select packaging method:
      [1]: Full packaging
      [2]: Pack the most recently commit and currently not commit files
      [3]: Pack the difference files commit between two times
      [4]: Pack files that have been modified but not yet commit
      [5]: Pack the most recently commit files
      [6]: Pack the last two commit files
      [7]: Pack the specified one-time commit
      [8]: Pack specified branch
 Your choice (default [5]): 4
Change file exists: ./dist/changes.txt
fatal: pathspec '测试中文文件能否打包和安装.md' did not match any files

replaceme

replaceme.ini配置说明

# 要替换的项目在服务器上的绝对路径(自动生成)(可以更改)
object_root = /srun3/www/srun4-mgr/
# 备份文件后缀名(自动生成)(不可更改)
backup_suffix = 20230906011724
# 安装包中需要忽略的目录前缀(按需手动配置)(默认为空)
# 如: 
# 安装包中目录为: `ui/assets/img/icon-sprite.svg`
# 服务器中目录为: `/usr/share/zabbix/assets/img/icon-sprite.svg`
# 则需要配置为: 忽略安装包中 `ui/` 
ignore_dir_prefix = ui/

replaceme

部署

  • 将安装包直接上传到服务器任意目录

  • 解压缩安装包到任意空目录, 空目录下不能有任何其它文件

  • 如: tar -zxf xxx.tar.gz -C ./test

  • 进入解压后的目录

  • 如: cd test

  • 执行: php ./replaceme (老版本PHP5请执行php ./replaceme5, 下面不再赘述)

  • 如需记录更新日志则这样执行: php ./replaceme | tee zzz_exec.log

  • 支持自定义备份后缀: php ./replaceme --backup=xxx

# 执行过程解释
php ./replaceme
  # 这里需要指定当前项目的根目录, 且项目根目录必须存在, 如果默认目录正确则直接回车
  请指定项目根目录(默认:/srun3/www/xxx/): 

请知悉: 如果被替换的文件存在, 会先备份原来的文件再进行替换, 如果文件不存在, 则会进行自动创建

支持回滚操作

  • 只能回滚当前安装包内的文件
  • 回滚命令: php ./replaceme --rollback

luguohuakai/packme 适用场景与选型建议

luguohuakai/packme 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 186 次下载、GitHub Stars 达 2, 最近一次更新时间为 2023 年 08 月 25 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「package」 「compression」 「archive」 「tar」 「packme」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 luguohuakai/packme 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 luguohuakai/packme 我们能提供哪些服务?
定制开发 / 二次开发

基于 luguohuakai/packme 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 186
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 23
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-08-25