Skip to content

📦 ArchivePackage

创建指定包的归档文件,可指定版本。等价于执行 composer archive <packageName>[=<version>] --dir=<destination>

何时使用

当需要把某个依赖包(而非整个项目)打包成压缩包,用于离线分发或镜像归档时使用。

签名

go
func (c *Composer) ArchivePackage(packageName string, version string, destination string) (string, error)

参数

参数类型说明
packageNamestring要归档的包名,例如 symfony/console
versionstring包版本,例如 v5.4.0;传空字符串则使用最新版本
destinationstring存储归档文件的目标目录路径

返回值

返回值类型说明
第一返回值string归档命令的输出
第二返回值error创建归档失败时返回

示例

go
package main

import (
	"fmt"
	"log"

	"github.com/scagogogo/composer-skills/pkg/composer"
)

func main() {
	comp, err := composer.New(composer.DefaultOptions())
	if err != nil {
		log.Fatalf("初始化失败: %v", err)
	}

	// 归档指定版本的包
	output, err := comp.ArchivePackage("symfony/console", "v5.4.0", "/tmp/pkg-archive")
	if err != nil {
		log.Fatalf("创建包归档失败: %v", err)
	}
	fmt.Println("包归档结果:", output)

	// 归档最新版本
	if _, err := comp.ArchivePackage("symfony/console", "", "/tmp/pkg-archive"); err != nil {
		log.Fatalf("创建包归档失败: %v", err)
	}
}

进阶

  • 需要自定义格式等更多选项时用 ArchivePackageWithOptions(位于 archive.go)。
  • 归档整个项目用 Archive
  • 归档命令底层通过 Run 执行,可参考其超时与上下文控制。

基于 MIT 许可证发布