composer를 사용하여 Laravel에서 패키지를 제거하는 방법은 무엇입니까?


402

Laravel 4에서 패키지를 제거하는 올바른 방법은 무엇입니까? 오랫동안 시도했습니다.

  1. composer.json"필수"섹션에서 선언 제거
  2. 클래스 별명 제거 app.php
  3. 내 코드에서 패키지에 대한 참조를 제거하십시오 :-)
  4. 운영 composer update
  5. 운영 composer dump-autoload

작동하지 않는! 뭔가 빠졌습니까?

일부 패키지는 "artisan config : publish ..."를 통해 구성을 게시합니다. "게시 취소"할 수있는 방법이 있습니까?

답변:


594

다음 명령을 실행하면 공급 업체 (또는 패키지를 설치하는 모든 위치), composer.json 및 composer.lock에서 패키지가 제거됩니다. 공급 업체 / 패키지를 적절히 변경하십시오.

composer remove vendor/package

분명히 앱 내에서 해당 패키지에 대한 참조를 제거해야합니다.

현재 다음 버전의 작곡가를 실행하고 있습니다.

Composer version 1.0-dev (7b13507dd4d3b93578af7d83fbf8be0ca686f4b5) 2014-12-11 21:52:29

13
그런 다음 composer update공급 업체에서 공급 업체 / 패키지 폴더를 제거하기 위해 실행
Zeshan

11
@ZeshanKhattak 작곡가 업데이트는 모든 종속성을 업데이트합니다. 그것은 프로젝트를 불안정한 상태로 둡니다. 종속성을 업데이트하지 않으려면 composer 업데이트를 사용하지 마십시오
zarax

11
composer remove packagename, 그것은 composer.json에서 패키지 제거를 업데이트하고 공급 업체에서 패키지 폴더를 제거합니다 ... laravel-5.4.24, composer-1.4.2.

composer가 실행 후 누락 된 패키지를 자동으로 설치하는 것 같습니다 composer remove <package>. 어쨌든 그것을 피하기 위해? 버전 1.7.2 사용.
Olle Härstedt

composer remove package_name 대신 : composer remove vendor / package laravel이 자동으로 공급 업체 디렉토리에서 패키지를 체크인하므로 공급 업체가 필요하지 않습니다.
prashant

171

작동했습니다 ... Laravel에서 패키지를 제거하는 단계는 다음과 같습니다.

  1. composer.json에서 선언 제거 ( "필수"섹션)
  2. "app / config / app.php"에서 서비스 제공자 제거 ( "제공자"배열의 참조)
  3. "app / config / app.php"에서 클래스 별명 제거
  4. 코드에서 패키지에 대한 참조를 제거하십시오 :-)
  5. "composer update vendor / package-name"을 실행하십시오. 그러면 "공급 업체"폴더에서 패키지 폴더가 제거되고 작곡가 자동로드 맵이 다시 작성됩니다.
  6. 게시 된 파일을 수동으로 삭제 (zwacky의 주석 읽기)

"Vendor"폴더에서 패키지 폴더를 제거합니다


2
애셋 / 구성을 게시 취소하는 것은 실제로 자동화 된 것이 아닙니다. 일반적으로 config / 또는 public /에서 공급 업체 / 패키지 폴더를 수동으로 삭제합니다.
zwacky

7
이제 laravel은 "repack package <package-name>"과 같은 것을 쉽게 만들 수 있습니다.
Chandan Gupta

19
이 솔루션의 문제점은 다른 모든 패키지를 업데이트하므로 원하는 것이 아닐 수 있습니다.
tremby

3
(1)과 (5)는 running으로 대체 될 수 composer remove vendor/package있다고 생각합니다.
JCarlosR

감사합니다.이 지침은 작동하지 않는 Igaster / laravel-theme 패키지를 제거하는 데 유용했습니다.
Jjsg08

59

다음 명령을 실행

composer remove Vendor/Package Name

그게 다야. 작곡가 업데이트가 필요하지 않습니다. 공급 업체 / 패키지 이름은 이전에 설치된 디렉토리입니다.


1
나는 이것을했고 그것은 composer.json에 더 이상 필요하지 않다고 말합니다. 그래서 '무시'
Sweet Chilly Philly

1
composer remove <packageName>나는 이것이 패키지를 제거하는 데 완벽하다고 생각합니다. 잊어 버리기 Vendor:) 예를 들어composer remove laravel/tinker
Shamsul Huda

43

일반적으로 다음 composer remove과 같이 사용하면 충분합니다.

$ composer remove vendor/package

그러나 composer 패키지가 제거되고 구성 캐시가 정리되지 않으면 정리할 수 없습니다.

php artisan config:clear

당신은 오류가 발생할 수 있습니다 In ProviderRepository.php line 208:

'Laracasts \ Flash \ FlashServiceProvider'클래스를 찾을 수 없습니다

파일을 삭제하지 않으면 막 다른 골목입니다.

$rm bootstrap/cache/config.php

이것은 라 라벨 5.6입니다. 아주 오래된 것은 아닙니다.

일반적으로 오래된 캐시 위에 새 릴리스의 파일을 복사 할 때 자동 배포에서 발생합니다. 복사하기 전에 캐시를 지운 경우에도 마찬가지입니다. 오래된 캐시와 새로운 composer.json으로 끝납니다.


2
나는 그것이 5.7에서 해결 된 생각
예브게니 Afanasyev을

1
5.6에서는 부트 스트랩 / 캐시가 비어있었습니다. 캐시 경로 (config / cache.php)를 변경 한 것을 잊었습니다! 새 캐시 폴더에서 파일을 삭제하면 문제가 해결되었습니다!
Aine

2
@YevgeniyAfanasyev 이것은 수정되지 않았습니다 5.7에서도
Shreyansh Panchal

2
나는 거의 3 시간 동안 머리카락을 내밀었다. 나는 config:clear이것을 고칠 것이라고 생각했다 .
Shreyansh Panchal

34

터미널에 follwing 명령을 입력하기 만하면 패키지를 제거 할 수 있으며 패키지를 설치할 때 제공 한 공급자와 별칭을 제거하고 작곡가를 업데이트 할 수 있습니다.

composer remove vendor/your_package_name
composer update

1
때때로 새로운 의존성을 업데이트하려면 작곡가를 업데이트해야합니다. 나는 그것을 운영하는 데 아무런 해가 없다고 생각합니다.
Shahrukh Anwar

18

아래 두 가지 방법 중 하나를 수행 할 수 있습니다.

  1. 아래 명령 실행 (다른 패키지를 업데이트하지 않고 패키지를 제거하는 가장 권장되는 방법)

    $ composer remove vendor/package

  2. composer.json 파일로 이동하여 아래와 같이 명령을 실행하면 패키지가 제거되지만 다른 패키지도 업데이트됩니다.

    $ composer update


17

composer.json 선언에서 패키지를 제거하기 전에 캐시를 제거하십시오

php artisan cache:clear  
php artisan config:clear 

캐시를 제거하지 않고 클래스를 찾을 수 없음 오류가 발생하면 패키지를 다시 설치하고 캐시를 지우고 다시 제거하십시오.


16

가장 간단하고 쉬운 방법

통사론:

composer remove <package>

예:

composer remove laravel/tinker

15

위의 모든 단계를 수행 한 후에도 여전히 오류가 발생하면 프로젝트로 이동 bootstrap->cache->config.php하여 캐시 된 배열에서 공급자 및 별칭 항목을 수동으로 제거하십시오.


이것은 나를 도왔다.
피터 그리핀

1
일부 패키지 공급 업체는 패키지를 작성하기위한 모든 요구 사항을 충족하지 않습니다. 따라서 이러한 공급 업체 composer remove vendor/package는 캐시 항목을 제대로 제거 할 수 없습니다. 따라서 @Ramjith Ap는 절대적으로 정확합니다.
Samrat Khan

12

**

"작곡가 공급 업체 / 패키지 제거"사용

** 이것은 예입니다 : Pakage 설치 / 추가

composer require firebear/importexportfree

Uninsall / 제거

composer remove firebear/importexportfree

제거 후 마무리 :

php -f bin/magento setup:upgrade

php bin/magento setup:static-content:deploy f

php bin/magento indexer:reindex 

php -f bin/magento cache:clean

9

composer 명령을 사용하여 패키지를 제거하려면

composer remove <package>

composer 명령을 사용하여 패키지를 설치하려면

composer require <package>

composer.json에 언급 된 모든 패키지를 설치하려면

composer install

패키지를 업데이트하려면

composer update

나는 이것을 Laravel 프로젝트에 사용했습니다.


9

터미널에 다음 명령을 입력하여 패키지를 제거하고 패키지를 설치할 때 제공 한 공급자와 별칭을 제거하고 작성기를 업데이트하면됩니다.

composer remove <package_name>
composer update

8

주어진 답변이 여전히 도움이되지 않으면 다음을 시도하십시오.

  • 수동의 행 삭제 require에서을composer.json

  • 운영 composer update


3

우리는 훌륭한 해결책을 찾았습니다. 이 솔루션은 실제로 Laravel 6에서 수행됩니다. Laravel Project에서 패키지를 제거하려면 다음 단계에 따라 패키지를 쉽게 제거 할 수 있습니다.

1 단계 : 제거하려는 패키지 이름을 알아야합니다. 완전한 패키지 이름을 모른다면 프로젝트 폴더를 열고 composer.json파일 로 이동하여 이름을 확인하십시오. 배열 필요

"require": {
        "php": "^7.2",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^6.2",
        "laravel/passport": "^8.3",
        "laravel/tinker": "^2.0"
    },

여기서 "fideloper / proxy"패키지를 제거한다고 가정하겠습니다.

2 단계 : 프로젝트 루트 폴더 디렉토리로 명령 프롬프트 열기 3 단계 : 먼저 다음 명령으로 모든 캐시를 지 웁니다. 명령을 하나씩 실행하십시오.여기에 이미지 설명을 입력하십시오

php artisan cache:clear  
php artisan config:clear 

4 단계 : 이제 다음 명령을 작성하여 패키지를 제거하십시오. 여기 예제 패키지 대신 패키지 이름을 변경해야합니다.

composer remove fideloper/proxy

이제 패키지가 제거되는 동안 몇 초 동안 기다리십시오.


2
또는 composer remove laravel/telescope --dev개발 패키지 인 경우
Vinsa

3

패키지를 제거하십시오

composer remove vendorname/packagename

composer.json에서 패키지 제거 를 확인할 수 있습니다. -docs

또는 composer.json파일 에서 패키지 이름을 제거하고 composer update프로젝트 디렉토리 내에서 실행할 수 있습니다. 도움이 되길 바랍니다.

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