Composer包构建文件

{
    "name": "liujianxin/message-service-packagist",
    "description": "chang yu jun ge .TECH Message-service",
    "version": "1.0.6",
    "type": "library",
    "license": "MIT",
    "authors": [
        {
            "name": "liujianxin",
            "email": "jiujianxin0122@gmail.com"
        }
    ],
    "require": {
        "php": "^7.3 || ^8.0",
        "guzzlehttp/guzzle": "^7.0.1"
    },
    "require-dev": {
        "phpunit/phpunit": "^9.0",
    },
    "autoload": {
        "psr-4": {
            "ChangYuJunGe\\Message\\": "src/"
        },
        "files": [
            "src/Helpers/functions.php"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "Vendor\\Project\\Tests\\": "tests/"
        }
    },
    "scripts": {
        "post-install-cmd": [
            "Vendor\\Project\\ScriptHandler::postInstall"
        ],
        "post-update-cmd": [
            "Vendor\\Project\\ScriptHandler::postUpdate"
        ],
        "test": "phpunit"
    },
    "config": {
        "optimize-autoloader": true,
        "sort-packages": true
    },
    "extra": {
        "branch-alias": {
            "dev-main": "1.0-dev"
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}
  • type:包的类型
  • license:包的授权许可协议
  • require: 定义包的运行时依赖项
  • require-dev:定义包的开发依赖项
  • scripts: 定义在特定事件后执行的脚本

    • "post-install-cmd": 在 composer install 后执行
    • "post-update-cmd": 在 composer update 后执行
    • "test": 自定义命令,运行 composer test 时执行
  • autoload:定义了 PSR-4 和文件级别的自动加载规则

    • "psr-4": 将 ChangYuJunGe\\Message\\ 命名空间映射到 src/ 目录。
    • "files": 自动加载 src/Helpers/functions.php 文件。

Composer包的其他安装方式

  • path 存储库:适用于本地开发,使用相对路径或者绝对路径引用本地包。
  • vcs 存储库:适用于远程版本控制系统上的包,通过 SSH 或 Access Token 访问。
  • 远程自建仓库:适用于私有的 Composer 仓库,使用 HTTP Basic Auth 或其他认证方式访问。

    • 使用Packagist搭建私有 Composer 仓库
    • 配置 HTTP Basic Auth 或其他认证方式来限制访问。
    • {
          "repositories": [
              {
                  "type": "composer",
                  "url": "https://your-private-composer.com"
              }
          ],
          "config": {
              "http-basic": {
                  "your-private-composer.com": {
                      "username": "your-username",
                      "password": "your-password"
                  }
              }
          }
  • GitLab CI/CD 令牌:适用于通过 CI/CD 自动部署,使用 GitLab CI/CD 令牌访问私有仓库。

    • 在 GitLab 项目中,创建一个 CI/CD 令牌,该令牌有权限访问私有仓库
    • 配置 .gitlab-ci.yml 文件

      stages:
        - install
      
      variables:
        # 配置 Composer 使用 CI_JOB_TOKEN 进行身份验证
        COMPOSER_AUTH: '{"http-basic": {"gitlab.com": {"username": "gitlab-ci-token", "password": "$CI_JOB_TOKEN"}}}'
      
      install_dependencies:
        stage: install
        script:
          - composer install
  • 符号链接(symlink):可以在开发过程中方便地引用本地代码,而不必每次修改后都发布新的版本。

    • 创建一个符号链接指向你的本地库

      ln -s /path/to/local-library vendor/vendor-name/package-name
    • 配置 Composer
    {
        "repositories": [
            {
                "type": "path",
                "url": "../path/to/local-library"
            }
        ],
        "require": {
            "vendor-name/package-name": "*"
        }

Leojx
935 声望30 粉丝

没有个人简介