Composer 설치 경로를 지정하는 방법은 무엇입니까?


93

이 정의가 있습니다.

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "symfony/sfGuardPlugin",
                "version": "4.0.2",
                "dist": {
                    "url": "http://plugins.symfony-project.org/get/sfGuardPlugin/sfGuardPlugin-4.0.2.tgz",
                    "type": "tar"
                }
            }
        }
    ],
    "require": {
        "symfony/sfGuardPlugin": "4.0.*"
    }
}

Symfony 1을 사용하고 있으며 plugins/sfGuardPlugin/. 이것을 어떻게 지정합니까?

답변:


140

vendordir을 다른 것으로 정의 할 수있는 것 같습니다 ( plugins귀하의 경우) :

{
    "config": {
        "vendor-dir": "plugins"
    }
}

그런 다음 패키지 이름을 다음과 같이 레벨 디렉토리가 포함되지 않도록 변경할 수 있습니다.

        "package": {
            "name": "sfGuardPlugin",

따라서 composer.json다음과 같이 보일 것입니다.

{
    "config": {
        "vendor-dir": "plugins"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "sfGuardPlugin",
                "version": "4.0.2",
                "dist": {
                    "url": "http://plugins.symfony-project.org/get/sfGuardPlugin/sfGuardPlugin-4.0.2.tgz",
                    "type": "tar"
                }
            }
        }
    ],
    "require": {
        "sfGuardPlugin": "4.0.*"
    }
}

편집하다

이 구성을 사용하면 경로를 얻을 수 있습니다 ( 물론 심포니에는 좋지 않음).

plugins / sfGuardPlugin / sfGuardPlugin-4.0.2 /

이 해결 방법을 찾았습니다 composer.json.

{
    "config": {
        "vendor-dir": "plugins"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "sfGuardPlugin",
                "version": "4.0.2",
                "source": {
                    "url": "http://svn.symfony-project.com/plugins/sfGuardPlugin/",
                    "type": "svn",
                    "reference": "branches/1.3/"
                }
            }
        }
    ],
    "require": {
        "sfGuardPlugin": "4.0.*"
    }
}

plugins/sfGuardPlugin/sfGuardPlugin-4.0.2/좋습니다 . 추출 된 폴더가 지금만큼 깊지 않도록 어떻게 든 만들 수 있습니다. 대신 원 plugins/sfGuardPlugin하십니까?
Tower

네, 방금 봤어요. 나는 (대신 tar) 다른 유형으로 시도하고 있습니다.
j0k

그것은 잘 작동합니다 - 그들은 여전히 :) 후 저장소 그래서
타워

3
특정 패키지에 대해서만 공급 업체 디렉토리를 지정하고 나머지는 기본값으로 두는 방법이 있습니까?
mr1031011

1
이것은 위대하고 조사 된 답변이지만 Adam 's V.를 풀어주지 마십시오. 더 공식적이고 오 쉽고 쉽습니다 ;-)
mTorres

28

또한 "symfony1-plugin"패키지 유형의 다중 프레임 워크 작성기 라이브러리 설치 프로그램composer / installers를 사용할 수 있습니다 . 다음은 내 composer.json 파일이 Symfony 1.4 (lib / vendor)와 플러그인 (/ plugins)을 모두 설치하기위한 것입니다.

{
    "config": {
        "vendor-dir": "lib/vendor"
    },
    "repositories": {
        "symfony": {
            "type": "package",
            "package": {
                "name": "symfony/symfony1",
                "version": "1.4",
                "dist": {
                    "url": "https://github.com/symfony/symfony1/zipball/1.4",
                    "type": "zip"
                }
            }
        },
        "sfResquePlugin" : {
            "type": "package",
            "package": {
                "name": "devpips/sfResquePlugin",
                "type": "symfony1-plugin",
                "version": "0.1",
                "dist": {
                    "url": "https://github.com/devpips/sfResquePlugin/zipball/master",
                    "type": "zip"
                }
            }
        }
    },
    "require": {
        "composer/installers": "dev-master",
        "symfony/symfony1": "1.4",
        "devpips/sfResquePlugin":"0.1"
    }
}

이게 어떤 의미인지 모르겠습니다. 자세히 설명해 주 /plugins시겠습니까?
Isaac Lubow

@IsaacLubow, 이것은 플러그인이있는 composer-installers것처럼 패키지 로 수행됩니다. symfony1:) Symfony1Installer.php
spirit

11

COMPOSER_VENDOR_DIR환경 변수를 참조하십시오 .

이 변수를 설정하면 Composer가 공급 업체가 아닌 디렉토리에 종속성을 설치하도록 할 수 있습니다.

vagrant 또는 docker와 같은 특정 환경에서 이것을 재정의하려는 경우에 도움이 될 수 있으며 공유 폴더 / 볼륨에 있지 않을 것입니다.

J0k 말했듯이 그리고, 거기 vendor-dirconfigcomposer.json

기본값은 공급 업체입니다. 원하는 경우 다른 디렉토리에 종속성을 설치할 수 있습니다. $ HOME 및 ~는 vendor-dir의 홈 디렉토리 경로와 아래의 모든 * -dir 옵션으로 대체됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.