Documentation
¶
Overview ¶
Package composer 提供用于解析和操作PHP Composer JSON文件的功能。
此包允许开发者: - 将composer.json文件解析为Go结构体 - 创建新的composer.json配置 - 验证包名 - 管理依赖项(添加、删除、检查) - 操作PSR-0/PSR-4自动加载配置 - 将结构体转换回JSON - 保存到文件
Example ¶
// Create a new empty composer.json composer, err := CreateNew("vendor/project", "Example PHP project") if err != nil { log.Fatalf("Failed to create composer.json: %v", err) } // Add dependencies composer.AddDependency("php", "^8.0") composer.AddDependency("monolog/monolog", "^2.0") composer.AddDevDependency("phpunit/phpunit", "^9.0") // Set up PSR-4 autoloading psr4Map := make(map[string]interface{}) psr4Map["Vendor\\Project\\"] = "src/" composer.Autoload.PSR4 = psr4Map // Convert to JSON and print jsonStr, _ := composer.ToJSON(true) fmt.Println(jsonStr) // Output contains: // "name": "vendor/project", // "description": "Example PHP project",
Example (ParseExisting) ¶
// Sample composer.json content jsonStr := `{ "name": "vendor/existing-project", "require": { "php": "^7.4" } }` // Parse from string composer, err := ParseString(jsonStr) if err != nil { log.Fatalf("Failed to parse composer.json: %v", err) } // Check if a dependency exists if composer.DependencyExists("php") { fmt.Println("PHP dependency exists with version:", composer.Require["php"]) } // Add more dependencies composer.AddDependency("symfony/console", "^5.0")
Output: PHP dependency exists with version: ^7.4
Example (SaveAndLoad) ¶
// Create a temporary directory for the example tmpDir, err := os.MkdirTemp("", "composer-example") if err != nil { log.Fatalf("Failed to create temp directory: %v", err) } defer os.RemoveAll(tmpDir) // Create a new composer.json composer, _ := CreateNew("vendor/save-example", "Example for saving and loading") composer.AddDependency("php", "^8.0") // Save to file filePath := filepath.Join(tmpDir, "composer.json") if err := composer.Save(filePath, true); err != nil { log.Fatalf("Failed to save composer.json: %v", err) } fmt.Println("Saved composer.json") // Load from file loadedComposer, err := ParseFile(filePath) if err != nil { log.Fatalf("Failed to load composer.json: %v", err) } fmt.Println("Loaded composer.json for:", loadedComposer.Name)
Output: Saved composer.json Loaded composer.json for: vendor/save-example
Index ¶
- Constants
- Variables
- func CreateBackup(filePath string, backupSuffix string) (string, error)
- func DefaultConfig() *config.Config
- func NewRepository(repoType, url string) *repository.Repository
- func ValidateComposerJSON(name, description, stability string) error
- func ValidateVersion(version string) error
- type Author
- type ComposerJSON
- func CreateLibrary(name, description, phpVersion string) (*ComposerJSON, error)
- func CreateNew(name, description string) (*ComposerJSON, error)
- func CreateProject(name, description, phpVersion string) (*ComposerJSON, error)
- func Parse(r io.Reader) (*ComposerJSON, error)
- func ParseDir(dir string) (*ComposerJSON, error)
- func ParseFile(filePath string) (*ComposerJSON, error)
- func ParseString(jsonStr string) (*ComposerJSON, error)
- func (c *ComposerJSON) AddDependency(packageName, version string) error
- func (c *ComposerJSON) AddDevDependency(packageName, version string) error
- func (c *ComposerJSON) AddExclusion(pattern string)
- func (c *ComposerJSON) AddRepository(repo repository.Repository)
- func (c *ComposerJSON) DependencyExists(packageName string) bool
- func (c *ComposerJSON) DevDependencyExists(packageName string) bool
- func (c *ComposerJSON) GetAllDependencies() map[string]string
- func (c *ComposerJSON) GetPSR4Map() (map[string]string, bool)
- func (c *ComposerJSON) RemoveDependency(packageName string) bool
- func (c *ComposerJSON) RemoveDevDependency(packageName string) bool
- func (c *ComposerJSON) RemoveExclusion(pattern string) bool
- func (c *ComposerJSON) RemovePSR4(namespace string) bool
- func (c *ComposerJSON) Save(filePath string, indent bool) error
- func (c *ComposerJSON) SetPSR4(namespace, path string)
- func (c *ComposerJSON) ToJSON(indent bool) (string, error)
- type Support
Examples ¶
Constants ¶
const Version = "1.0.0"
包版本
Variables ¶
var ( // ErrInvalidJSON 表示JSON格式无效 ErrInvalidJSON = parser.ErrInvalidJSON // ErrFileNotFound 表示composer.json文件未找到 ErrFileNotFound = parser.ErrFileNotFound // ErrReadingFile 表示读取文件时出错 ErrReadingFile = parser.ErrReadingFile // ErrUnmarshallingJSON 表示JSON反序列化时出错 ErrUnmarshallingJSON = parser.ErrUnmarshallingJSON )
错误定义
Functions ¶
func CreateBackup ¶
CreateBackup 在修改前创建composer.json的备份
参数:
- filePath: 原始文件路径
- backupSuffix: 备份文件后缀(为空时默认使用.bak)
返回:
- string: 备份文件路径
- error: 如果备份失败,返回错误
示例:
// 在修改前备份composer.json backupPath, err := composer.CreateBackup("./composer.json", "") if err != nil { log.Fatal(err) } fmt.Printf("已创建备份: %s\n", backupPath) // 输出:已创建备份: ./composer.json.bak // 使用自定义后缀 backupPath, err = composer.CreateBackup("./composer.json", ".backup") if err != nil { log.Fatal(err) } fmt.Printf("已创建备份: %s\n", backupPath) // 输出:已创建备份: ./composer.json.backup
func DefaultConfig ¶
DefaultConfig 返回带有合理默认值的Config
返回:
- *config.Config: 一个配置好标准默认值的Config对象
示例:
// 创建一个新的composer.json文件 composer, _ := composer.CreateNew("vendor/project", "我的PHP项目") // 使用默认配置 composer.Config = *composer.DefaultConfig() // 修改特定配置 composer.Config.ProcessTimeout = 600 // 设置为10分钟 composer.Config.VendorDir = "lib" // 更改vendor目录 // 保存修改 composer.Save("./composer.json", true)
func NewRepository ¶
func NewRepository(repoType, url string) *repository.Repository
NewRepository 创建一个新的仓库
参数:
- repoType: 仓库类型,如"composer"、"vcs"、"path"
- url: 仓库URL或路径
返回:
- *repository.Repository: 新创建的仓库对象
示例:
// 创建Packagist仓库 packagist := composer.NewRepository("composer", "https://packagist.org") // 创建GitHub仓库 githubRepo := composer.NewRepository("vcs", "https://github.com/symfony/console") // 创建本地路径仓库 localRepo := composer.NewRepository("path", "../my-local-package") // 向Composer配置添加仓库 composer, _ := composer.ParseFile("./composer.json") composer.AddRepository(*packagist) composer.Save("./composer.json", true)
func ValidateComposerJSON ¶
ValidateComposerJSON 验证ComposerJSON结构体
参数:
- name: 包名,格式为"vendor/project"
- description: 包描述
- stability: 稳定性标识,如"stable"、"beta"、"alpha"、"dev"(可为空)
返回:
- error: 如果验证失败,返回错误;验证通过返回nil
验证规则:
- 包名必须符合"vendor/project"格式
- 描述不能为空
- 如果提供了稳定性标识,必须是有效值
示例:
// 验证基本信息 err := composer.ValidateComposerJSON("acme/blog", "Acme博客应用", "") if err != nil { fmt.Println("验证失败:", err) } else { fmt.Println("验证通过") } // 验证带稳定性标识 err = composer.ValidateComposerJSON("acme/blog", "Acme博客应用", "beta") if err != nil { fmt.Println("验证失败:", err) } else { fmt.Println("验证通过") }
func ValidateVersion ¶
ValidateVersion 验证版本字符串是否符合语义化版本规范
参数:
- version: 要验证的版本字符串,如"1.0.0"、"^2.1"、">=7.4"
返回:
- error: 如果验证失败,返回错误;验证通过返回nil
支持的格式:
- 精确版本: "1.0.0"
- 范围版本: ">=1.0.0"、"<=2.0.0"、">1.0.0 <2.0.0"
- 通配符: "1.0.*"
- 赋值符: "^1.0.0"(兼容1.x.x)、"~1.0.0"(兼容1.0.x)
- 稳定性标识: "1.0.0-beta"、"1.0.0-RC1"
示例:
// 验证不同类型的版本字符串 versions := []string{ "1.0.0", // 精确版本 "^1.0.0", // 赋值符版本 ">=7.4", // 范围版本 "1.0.*", // 通配符版本 "1.0.0-beta1", // 带稳定性标识的版本 "invalid", // 无效版本 } for _, v := range versions { err := composer.ValidateVersion(v) if err != nil { fmt.Printf("版本'%s'无效: %v\n", v, err) } else { fmt.Printf("版本'%s'有效\n", v) } }
Types ¶
type Author ¶
type Author struct { // Name 作者姓名(必填) Name string `json:"name,omitempty"` // Email 作者邮箱 Email string `json:"email,omitempty"` // Homepage 作者个人主页 Homepage string `json:"homepage,omitempty"` // Role 在项目中的角色,如"Developer"、"Maintainer" Role string `json:"role,omitempty"` }
Author 表示Composer包的作者信息
示例:
{ "name": "张三", "email": "zhangsan@example.com", "homepage": "https://example.com", "role": "Developer" }
type ComposerJSON ¶
type ComposerJSON struct { // Name 包名,格式为"vendor/project",如"symfony/console" Name string `json:"name,omitempty"` // Description 项目描述 Description string `json:"description,omitempty"` // Type 包类型,如"library"、"project"、"metapackage"、"composer-plugin" Type string `json:"type,omitempty"` // Keywords 关键词数组,用于Packagist搜索 Keywords []string `json:"keywords,omitempty"` // Homepage 项目主页URL Homepage string `json:"homepage,omitempty"` // Version 版本号(通常由VCS标签自动确定,很少在composer.json中手动指定) Version string `json:"version,omitempty"` // License 许可证,可以是单个字符串或字符串数组 License interface{} `json:"license,omitempty"` // 可以是字符串或字符串数组 // Authors 作者信息数组 Authors []Author `json:"authors,omitempty"` // Support 支持信息 Support Support `json:"support,omitempty"` // Require 运行时依赖,key为包名,value为版本约束 Require map[string]string `json:"require,omitempty"` // RequireDev 开发时依赖,key为包名,value为版本约束 RequireDev map[string]string `json:"require-dev,omitempty"` // Conflict 冲突依赖,指定与当前包冲突的包和版本 Conflict map[string]string `json:"conflict,omitempty"` // Replace 替换依赖,指定当前包可以替代的其他包和版本 Replace map[string]string `json:"replace,omitempty"` // Provide 提供依赖,指定当前包可以满足的其他包的需求 Provide map[string]string `json:"provide,omitempty"` // Suggest 建议依赖,推荐但非必需的包 Suggest map[string]string `json:"suggest,omitempty"` // Autoload 自动加载配置,包含PSR-4、PSR-0、classmap等 Autoload autoload.Autoload `json:"autoload,omitempty"` // AutoloadDev 开发时自动加载配置,通常用于测试代码 AutoloadDev autoload.Autoload `json:"autoload-dev,omitempty"` // Repositories 自定义包仓库配置 Repositories []repository.Repository `json:"repositories,omitempty"` // Config Composer配置选项 Config config.Config `json:"config,omitempty"` // Scripts Composer脚本定义,可以是字符串或字符串数组 Scripts map[string]interface{} `json:"scripts,omitempty"` // ScriptsDescriptions 脚本的说明文本 ScriptsDescriptions map[string]string `json:"scripts-descriptions,omitempty"` // Extra 附加元数据,供第三方工具使用 Extra map[string]interface{} `json:"extra,omitempty"` // Bin 可执行文件列表,会被软链接到vendor/bin目录 Bin []string `json:"bin,omitempty"` // Archive 打包时的配置,如排除文件 Archive archive.Archive `json:"archive,omitempty"` // Abandoned 标记包已被废弃,可以是布尔值或推荐替代包的字符串 Abandoned interface{} `json:"abandoned,omitempty"` // 可以是布尔值或字符串 // NonFeatureBranches 指定哪些分支不应被视为功能分支 NonFeatureBranches []string `json:"non-feature-branches,omitempty"` // MinimumStability 最低稳定性要求,如"stable"、"RC"、"beta"、"alpha"、"dev" MinimumStability string `json:"minimum-stability,omitempty"` // PreferStable 优先使用稳定版本 PreferStable bool `json:"prefer-stable,omitempty"` }
ComposerJSON 表示composer.json文件的根结构
该结构体映射了PHP Composer项目中composer.json文件的所有可能字段, 允许通过Go代码读取和修改PHP项目的依赖管理配置。
示例:
{ "name": "vendor/project", "description": "项目描述", "type": "library", "require": { "php": ">=7.4", "symfony/console": "^5.4" }, "autoload": { "psr-4": { "App\\": "src/" } } }
func CreateLibrary ¶
func CreateLibrary(name, description, phpVersion string) (*ComposerJSON, error)
CreateLibrary 创建一个新的PHP库composer.json结构体
参数:
- name: 包名,格式为"vendor/project"
- description: 包描述
- phpVersion: PHP版本要求,例如"^7.4"(为空时默认使用"^7.4")
返回:
- *ComposerJSON: 创建的结构体
- error: 如果创建失败,返回错误
特点:
- Type设置为"library"
- 适合创建可复用的PHP库/组件
- 基于包名自动生成PSR-4命名空间映射
示例:
// 创建一个PHP库 composer, err := composer.CreateLibrary("acme/utils", "Acme实用工具集", "^7.4") if err != nil { log.Fatal(err) } // 添加库依赖 composer.AddDependency("symfony/http-foundation", "^5.4") // 设置更多自动加载规则 composer.SetPSR4("Acme\\Utils\\Tests\\", "tests/") // 保存到文件 composer.Save("composer.json", true) // 库的composer.json会包含类似以下内容: // { // "name": "acme/utils", // "description": "Acme实用工具集", // "type": "library", // "require": { // "php": "^7.4", // "symfony/http-foundation": "^5.4" // }, // "autoload": { // "psr-4": { // "Acme\\Utils\\": "src/", // "Acme\\Utils\\Tests\\": "tests/" // } // } // }
func CreateNew ¶
func CreateNew(name, description string) (*ComposerJSON, error)
CreateNew 创建一个新的空composer.json结构体,并设置基本字段
参数:
- name: 包名,格式为"vendor/project"
- description: 包描述
返回:
- *ComposerJSON: 创建的结构体
- error: 如果创建失败,返回错误
默认值:
- Type: "library"
- License: "MIT"
- Autoload.PSR4: 基于包名自动生成,如"Vendor\\Project\\"对应"src/"
示例:
// 创建一个基本的Composer包 composer, err := composer.CreateNew("vendor/project", "一个示例PHP包") if err != nil { log.Fatal(err) } // 查看生成的命名空间 psr4, ok := composer.GetPSR4Map() if ok { fmt.Println("PSR-4命名空间:", psr4) // 输出: PSR-4命名空间: map[Vendor\Project\:src/] } // 保存到文件 composer.Save("composer.json", true)
func CreateProject ¶
func CreateProject(name, description, phpVersion string) (*ComposerJSON, error)
CreateProject 创建一个新的PHP项目composer.json结构体
参数:
- name: 包名,格式为"vendor/project"
- description: 包描述
- phpVersion: PHP版本要求,例如"^7.4"(为空时默认使用"^7.4")
返回:
- *ComposerJSON: 创建的结构体
- error: 如果创建失败,返回错误
特点:
- Type设置为"project"
- 自动添加phpunit/phpunit作为开发依赖
- 基于包名自动生成PSR-4命名空间映射
示例:
// 创建一个PHP项目 composer, err := composer.CreateProject("acme/blog", "Acme博客应用", "^8.0") if err != nil { log.Fatal(err) } // 添加框架依赖 composer.AddDependency("symfony/framework-bundle", "^5.4") composer.AddDependency("doctrine/orm", "^2.10") // 添加更多开发依赖 composer.AddDevDependency("symfony/phpunit-bridge", "^5.4") // 保存到文件 composer.Save("composer.json", true)
func Parse ¶
func Parse(r io.Reader) (*ComposerJSON, error)
Parse 从io.Reader读取JSON并解析为ComposerJSON结构体
参数:
- r: io.Reader接口,可以是文件、字符串等
返回:
- *ComposerJSON: 解析后的结构体
- error: 如果解析失败,返回错误
示例:
file, err := os.Open("composer.json") if err != nil { log.Fatal(err) } defer file.Close() composer, err := composer.Parse(file) if err != nil { log.Fatal(err) } // 也可以从HTTP响应体解析 resp, err := http.Get("https://example.com/composer.json") if err != nil { log.Fatal(err) } defer resp.Body.Close() composer, err = composer.Parse(resp.Body)
func ParseDir ¶
func ParseDir(dir string) (*ComposerJSON, error)
ParseDir 在指定目录中查找并解析composer.json文件
参数:
- dir: 要查找composer.json的目录路径
返回:
- *ComposerJSON: 解析后的结构体
- error: 如果解析失败,返回错误
示例:
// 解析当前项目的composer.json composer, err := composer.ParseDir(".") if err != nil { log.Fatal(err) } // 解析指定PHP项目的composer.json composer, err = composer.ParseDir("/path/to/php/project") if err != nil { log.Fatal(err) }
func ParseFile ¶
func ParseFile(filePath string) (*ComposerJSON, error)
ParseFile 从文件路径解析composer.json文件
参数:
- filePath: composer.json文件路径
返回:
- *ComposerJSON: 解析后的结构体
- error: 如果解析失败,返回错误
示例:
composer, err := composer.ParseFile("./composer.json") if err != nil { log.Fatal(err) } fmt.Println("包名:", composer.Name) fmt.Println("版本:", composer.Version) fmt.Println("PHP依赖版本:", composer.Require["php"])
func ParseString ¶
func ParseString(jsonStr string) (*ComposerJSON, error)
ParseString 解析composer.json字符串
参数:
- jsonStr: 要解析的JSON字符串
返回:
- *ComposerJSON: 解析后的结构体
- error: 如果解析失败,返回错误
示例:
jsonStr := `{ "name": "vendor/project", "description": "My composer package", "require": { "php": ">=7.4" } }` composer, err := composer.ParseString(jsonStr) if err != nil { log.Fatal(err) } fmt.Println("包名:", composer.Name)
func (*ComposerJSON) AddDependency ¶
func (c *ComposerJSON) AddDependency(packageName, version string) error
AddDependency 向require部分添加包
参数:
- packageName: 要添加的包名,格式为"vendor/package"
- version: 依赖版本,如"^5.4"、">=7.4"
返回:
- error: 如果添加失败,返回错误
示例:
composer, _ := composer.ParseFile("./composer.json") // 添加PHP版本需求 err := composer.AddDependency("php", ">=7.4") if err != nil { log.Fatal(err) } // 添加Symfony组件 err = composer.AddDependency("symfony/console", "^5.4") if err != nil { log.Fatal(err) } // 保存修改 composer.Save("./composer.json", true)
func (*ComposerJSON) AddDevDependency ¶
func (c *ComposerJSON) AddDevDependency(packageName, version string) error
AddDevDependency 向require-dev部分添加包
参数:
- packageName: 要添加的包名,格式为"vendor/package"
- version: 依赖版本,如"^9.0"
返回:
- error: 如果添加失败,返回错误
示例:
composer, _ := composer.ParseFile("./composer.json") // 添加测试依赖 err := composer.AddDevDependency("phpunit/phpunit", "^9.0") if err != nil { log.Fatal(err) } // 添加代码风格检查工具 err = composer.AddDevDependency("squizlabs/php_codesniffer", "^3.6") if err != nil { log.Fatal(err) } // 保存修改 composer.Save("./composer.json", true)
func (*ComposerJSON) AddExclusion ¶
func (c *ComposerJSON) AddExclusion(pattern string)
AddExclusion 向归档排除列表添加路径模式
参数:
- pattern: 要排除的路径模式,如"/tests"、"/.github"
示例:
composer, _ := composer.ParseFile("./composer.json") // 排除测试目录和文档 composer.AddExclusion("/tests") composer.AddExclusion("/docs") composer.AddExclusion("/.github") // 保存修改 composer.Save("./composer.json", true) // composer.json中会包含以下内容: // "archive": { // "exclude": [ // "/tests", // "/docs", // "/.github" // ] // }
func (*ComposerJSON) AddRepository ¶
func (c *ComposerJSON) AddRepository(repo repository.Repository)
AddRepository 添加一个仓库到仓库列表
参数:
- repo: 要添加的仓库对象
示例:
composer, _ := composer.ParseFile("./composer.json") // 添加自定义Composer仓库 repo := composer.NewRepository("composer", "https://asset-packagist.org") composer.AddRepository(*repo) // 添加版本控制系统仓库 vcsRepo := composer.NewRepository("vcs", "https://github.com/myvendor/private-package") composer.AddRepository(*vcsRepo) // 保存修改 composer.Save("./composer.json", true)
func (*ComposerJSON) DependencyExists ¶
func (c *ComposerJSON) DependencyExists(packageName string) bool
DependencyExists 检查依赖项是否存在于require部分
参数:
- packageName: 要检查的包名,如"symfony/console"
返回:
- bool: 如果依赖项存在返回true,否则返回false
示例:
composer, _ := composer.ParseFile("./composer.json") if composer.DependencyExists("php") { fmt.Println("PHP依赖存在,版本为:", composer.Require["php"]) } else { fmt.Println("PHP依赖不存在") }
func (*ComposerJSON) DevDependencyExists ¶
func (c *ComposerJSON) DevDependencyExists(packageName string) bool
DevDependencyExists 检查依赖项是否存在于require-dev部分
参数:
- packageName: 要检查的包名,如"phpunit/phpunit"
返回:
- bool: 如果开发依赖项存在返回true,否则返回false
示例:
composer, _ := composer.ParseFile("./composer.json") if composer.DevDependencyExists("phpunit/phpunit") { fmt.Println("PHPUnit依赖存在,版本为:", composer.RequireDev["phpunit/phpunit"]) } else { fmt.Println("PHPUnit依赖不存在") }
func (*ComposerJSON) GetAllDependencies ¶
func (c *ComposerJSON) GetAllDependencies() map[string]string
GetAllDependencies 返回所有依赖项(require和require-dev合并)
返回:
- map[string]string: 包含所有依赖的映射,key为包名,value为版本需求
示例:
composer, _ := composer.ParseFile("./composer.json") allDeps := composer.GetAllDependencies() fmt.Println("项目共有", len(allDeps), "个依赖项:") for pkg, version := range allDeps { fmt.Printf("- %s: %s\n", pkg, version) }
func (*ComposerJSON) GetPSR4Map ¶
func (c *ComposerJSON) GetPSR4Map() (map[string]string, bool)
GetPSR4Map 获取PSR-4自动加载命名空间映射
返回:
- map[string]string: 命名空间到目录的映射,key为命名空间,value为目录路径
- bool: 是否成功获取映射,如果PSR-4配置不存在或无效则返回false
示例:
composer, _ := composer.ParseFile("./composer.json") psr4Map, ok := composer.GetPSR4Map() if !ok { fmt.Println("PSR-4配置不存在或无效") return } fmt.Println("PSR-4自动加载映射:") for namespace, path := range psr4Map { fmt.Printf("- %s => %s\n", namespace, path) }
func (*ComposerJSON) RemoveDependency ¶
func (c *ComposerJSON) RemoveDependency(packageName string) bool
RemoveDependency 从require部分移除包
参数:
- packageName: 要移除的包名
返回:
- bool: 如果成功移除返回true,如果包不存在返回false
示例:
composer, _ := composer.ParseFile("./composer.json") if composer.RemoveDependency("symfony/console") { fmt.Println("成功移除symfony/console") } else { fmt.Println("symfony/console不存在于依赖中") } // 保存修改 composer.Save("./composer.json", true)
func (*ComposerJSON) RemoveDevDependency ¶
func (c *ComposerJSON) RemoveDevDependency(packageName string) bool
RemoveDevDependency 从require-dev部分移除包
参数:
- packageName: 要移除的包名
返回:
- bool: 如果成功移除返回true,如果包不存在返回false
示例:
composer, _ := composer.ParseFile("./composer.json") if composer.RemoveDevDependency("phpunit/phpunit") { fmt.Println("成功移除phpunit/phpunit") } else { fmt.Println("phpunit/phpunit不存在于开发依赖中") } // 保存修改 composer.Save("./composer.json", true)
func (*ComposerJSON) RemoveExclusion ¶
func (c *ComposerJSON) RemoveExclusion(pattern string) bool
RemoveExclusion 从归档排除列表中删除路径模式
参数:
- pattern: 要移除的路径模式,如"/tests"
返回:
- bool: 如果成功移除返回true,如果模式不存在返回false
示例:
composer, _ := composer.ParseFile("./composer.json") if composer.RemoveExclusion("/tests") { fmt.Println("成功移除/tests排除模式") } else { fmt.Println("/tests排除模式不存在") } // 保存修改 composer.Save("./composer.json", true)
func (*ComposerJSON) RemovePSR4 ¶
func (c *ComposerJSON) RemovePSR4(namespace string) bool
RemovePSR4 移除PSR-4命名空间映射
参数:
- namespace: 要移除的命名空间,必须以\\结尾,如"App\\"
返回:
- bool: 如果成功移除返回true,如果命名空间不存在返回false
示例:
composer, _ := composer.ParseFile("./composer.json") if composer.RemovePSR4("App\\Tests\\") { fmt.Println("成功移除App\\Tests\\命名空间映射") } else { fmt.Println("App\\Tests\\命名空间映射不存在") } // 保存修改 composer.Save("./composer.json", true)
func (*ComposerJSON) Save ¶
func (c *ComposerJSON) Save(filePath string, indent bool) error
Save 将ComposerJSON结构体保存为JSON文件
参数:
- filePath: 保存的文件路径
- indent: 是否缩进格式化JSON(true为美化输出,false为紧凑输出)
返回:
- error: 如果保存失败,返回错误
示例:
// 创建新的composer.json composer, _ := composer.CreateNew("vendor/project", "我的PHP项目") // 添加依赖 composer.AddDependency("php", ">=7.4") composer.AddDependency("symfony/console", "^5.4") // 保存到文件(带缩进美化格式) err := composer.Save("./composer.json", true) if err != nil { log.Fatal(err) }
func (*ComposerJSON) SetPSR4 ¶
func (c *ComposerJSON) SetPSR4(namespace, path string)
SetPSR4 设置PSR-4命名空间映射
参数:
- namespace: 命名空间,必须以\\结尾,如"App\\"
- path: 目录路径,如"src/"
示例:
composer, _ := composer.ParseFile("./composer.json") // 设置命名空间映射 composer.SetPSR4("App\\", "src/") composer.SetPSR4("App\\Tests\\", "tests/") // 保存修改 composer.Save("./composer.json", true) // composer.json中会包含以下内容: // "autoload": { // "psr-4": { // "App\\": "src/", // "App\\Tests\\": "tests/" // } // }
func (*ComposerJSON) ToJSON ¶
func (c *ComposerJSON) ToJSON(indent bool) (string, error)
ToJSON 将ComposerJSON结构体转换为JSON字符串
参数:
- indent: 是否缩进格式化JSON(true为美化输出,false为紧凑输出)
返回:
- string: 转换后的JSON字符串
- error: 如果转换失败,返回错误
示例:
composer, _ := composer.ParseFile("composer.json") // 美化输出(带缩进) prettyJSON, err := composer.ToJSON(true) if err != nil { log.Fatal(err) } fmt.Println(prettyJSON) // 紧凑输出(不带缩进) compactJSON, err := composer.ToJSON(false) if err != nil { log.Fatal(err) }
type Support ¶
type Support struct { // Email 支持邮箱 Email string `json:"email,omitempty"` // Issues 问题跟踪URL Issues string `json:"issues,omitempty"` // Forum 论坛URL Forum string `json:"forum,omitempty"` // Wiki Wiki页面URL Wiki string `json:"wiki,omitempty"` // IRC IRC频道 IRC string `json:"irc,omitempty"` // Source 源代码URL Source string `json:"source,omitempty"` // Docs 文档URL Docs string `json:"docs,omitempty"` // Chat 聊天渠道URL Chat string `json:"chat,omitempty"` }
Support 包含包的支持信息
示例:
{ "email": "support@example.com", "issues": "https://github.com/vendor/project/issues", "docs": "https://docs.example.com" }
Directories
¶
Path | Synopsis |
---|---|
Package archive provides functionality related to PHP Composer archiving
|
Package archive provides functionality related to PHP Composer archiving |
Package autoload provides functionality related to PHP Composer autoloading
|
Package autoload provides functionality related to PHP Composer autoloading |
Package config provides functionality related to PHP Composer configuration
|
Package config provides functionality related to PHP Composer configuration |
Package dependency 提供与PHP Composer依赖项相关的功能
|
Package dependency 提供与PHP Composer依赖项相关的功能 |
Package parser 提供解析PHP Composer JSON文件的功能
|
Package parser 提供解析PHP Composer JSON文件的功能 |
Package repository provides functionality related to PHP Composer repositories
|
Package repository provides functionality related to PHP Composer repositories |
Package serializer 提供将PHP Composer结构体序列化为JSON的功能
|
Package serializer 提供将PHP Composer结构体序列化为JSON的功能 |
Package validation provides functionality for validating PHP Composer JSON structures
|
Package validation provides functionality for validating PHP Composer JSON structures |