【问题标题】:How to use global composer.json when create project in Composer?在 Composer 中创建项目时如何使用全局 composer.json?
【发布时间】:2023-04-09 23:29:01
【问题描述】:

我添加了以下配置,如果我需要全局包,一切正常。每个包都会从 mirrors.aliyun.com 安装

composer global config repo.packagist composer https://mirrors.aliyun.com/composer/

以及来自~/.composer/composer.json的内容

{
    "require": {
        "laravel/installer": "^4.0",
        "laravel/valet": "^2.11"
    },
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://mirrors.aliyun.com/composer/"
        }
    }
}

但是如果我用这样的作曲家创建项目,我发现包从https://repo.packagist.org/packages.json下载

composer create-project --prefer-dist laravel/laravel sample.com -vvv

我需要从镜像下载,但是全局composer.json中的配置被忽略了,有人知道这是为什么吗?

这是一些相关的日志

Reading /Users/jack/.composer/composer.json
Loading config file /Users/jack/.composer/config.json
Loading config file /Users/jack/.composer/auth.json
Loading config file /Users/jack/.composer/composer.json
Loading config file /Users/jack/.composer/auth.json
Reading /Users/jack/.composer/auth.json
Reading /Users/jack/.composer/vendor/composer/installed.json
Creating a "laravel/laravel" project at "./sample.com"
Downloading https://repo.packagist.org/packages.json

更新@19:55

我添加--repository参数,然后从镜像仓库下载laravel/laravel模板

composer create-project laravel/laravel sample.com --prefer-dist --repository=https://mirrors.aliyun.com/composer/ -vvv

但是下载laravel/laravel之后,还是从Packagist下载,这里有一些相关日志

Reading /Users/cuimingda/.composer/composer.json
Loading config file /Users/cuimingda/.composer/config.json
Loading config file /Users/cuimingda/.composer/auth.json
Loading config file /Users/cuimingda/.composer/composer.json
Loading config file /Users/cuimingda/.composer/auth.json
Reading /Users/cuimingda/.composer/auth.json
Reading /Users/cuimingda/.composer/vendor/composer/installed.json
Creating a "laravel/laravel" project at "./api.mingda.net"
Downloading https://mirrors.aliyun.com/composer/packages.json
Installing laravel/laravel (v7.25.0)

Created project in /Users/cuimingda/Sites/api.mingda.net
Reading ./composer.json
Reading /Users/cuimingda/.composer/composer.json
Loading config file /Users/cuimingda/.composer/config.json
Loading config file /Users/cuimingda/.composer/auth.json
Loading config file /Users/cuimingda/.composer/composer.json
Loading config file /Users/cuimingda/.composer/auth.json
Reading /Users/cuimingda/.composer/auth.json
Reading /Users/cuimingda/.composer/vendor/composer/installed.json
> post-root-package-install: @php -r "file_exists('.env') || copy('.env.example', '.env');"
Executing command (CWD): '/usr/local/Cellar/php/7.4.8/bin/php' -d allow_url_fopen='1' -d disable_functions='' -d memory_limit='1536M' -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Downloading https://repo.packagist.org/packages.json

【问题讨论】:

    标签: composer-php


    【解决方案1】:

    我自己找到了答案。

    不要使用以下方法设置镜像,因为它们会修改~/.composer/composer.json,而composer.json在创建项目时将不起作用

    composer global config repo.packagist composer https://mirrors.aliyun.com/composer/
    

    正确的方式-手动将以下代码放入~/.composer/config.json,无论composer global require还是composer create-project,它们都会从镜像站点获取文件,而不是从packagist.org获取文件

    {
        "config": {},
        "repositories": [
            {
                "type": "composer",
                "url": "https://mirrors.aliyun.com/composer/"
            },
            {
                "packagist": false
            }
        ]
    }
    

    无需在~/.composer/composer.json添加任何仓库相关配置

    {
        "require": {
            "laravel/installer": "^4.0",
            "laravel/valet": "^2.11"
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多