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.