Làm cách nào để xóa gói khỏi Laravel bằng trình soạn nhạc?


402

Cách đúng đắn để loại bỏ một gói từ Laravel 4 là gì? Lâu lắm rồi tôi mới thử:

  1. Xóa khai báo khỏi composer.json(trong phần "yêu cầu")
  2. Xóa mọi bí danh lớp khỏi app.php
  3. Xóa mọi tham chiếu đến gói khỏi mã của tôi :-)
  4. Chạy composer update
  5. Chạy composer dump-autoload

Không làm việc! Tui bỏ lỡ điều gì vậy?

Một số gói xuất bản cấu hình của chúng thông qua "artisan config: Publish ...". Có cách nào để "không công bố" chúng?

Câu trả lời:


597

Chạy lệnh sau sẽ xóa gói khỏi nhà cung cấp (hoặc bất cứ nơi nào bạn cài đặt gói), composer.json và composer.lock. Thay đổi nhà cung cấp / gói phù hợp.

composer remove vendor/package

Rõ ràng bạn sẽ cần xóa tham chiếu đến gói đó trong ứng dụng của mình.

Tôi hiện đang chạy phiên bản sau của nhà soạn nhạc:

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

13
Và sau đó chạy composer updateđể xóa thư mục nhà cung cấp / gói khỏi nhà cung cấp
Zeshan 8/2/2016

11
Cập nhật nhà soạn nhạc @ZeshanKhattak sẽ cập nhật tất cả các phụ thuộc. Nó cách để dự án ở trạng thái không ổn định. Không sử dụng cập nhật nhà soạn nhạc trừ khi bạn muốn cập nhật phụ thuộc
zarax

11
composer remove packagename, Nó cập nhật loại bỏ gói khỏi composer.json và xóa thư mục gói khỏi nhà cung cấp ... laravel - 5.4.24, nhà soạn nhạc - 1.4.2.

Có vẻ như nhà soạn nhạc đang tự động cài đặt các gói bị thiếu sau khi chạy composer remove <package>. Dù sao để tránh điều đó? Sử dụng phiên bản 1.7.2.
Olle Härstedt

thay vào đó là: trình soạn thảo loại bỏ gói_name thay vào đó: trình soạn thảo loại bỏ nhà cung cấp / gói không cần nhà cung cấp vì laravel tự động kiểm tra trong thư mục nhà cung cấp cho các gói.
prashant

171

Làm cho nó hoạt động ... Các bước để loại bỏ một gói khỏi Laravel là:

  1. Xóa khai báo khỏi composer.json (trong phần "yêu cầu")
  2. Xóa Nhà cung cấp dịch vụ khỏi "app / config / app.php" (tham chiếu trong mảng "nhà cung cấp")
  3. Xóa mọi Bí danh Lớp khỏi "app / config / app.php"
  4. Xóa mọi tham chiếu đến gói khỏi mã của bạn :-)
  5. Chạy "nhà cung cấp cập nhật nhà soạn nhạc / tên gói". Thao tác này sẽ xóa thư mục gói khỏi thư mục "nhà cung cấp" và sẽ xây dựng lại bản đồ tự động tải của nhà soạn nhạc.
  6. Xóa thủ công các tệp đã xuất bản (đọc bình luận của zwacky)

Nó sẽ xóa thư mục gói khỏi thư mục "Nhà cung cấp"


2
mặc dù việc không công bố tài sản / cấu hình không thực sự là một thứ tự động. tôi thường xóa thủ công các thư mục nhà cung cấp / gói trong config / hoặc public /.
zwacky

7
bây giờ laravel sẽ đưa ra một cái gì đó như "loại bỏ gói <tên gói>" để làm cho nó dễ dàng hơn.
Chandan Gupta

19
Một vấn đề với giải pháp này là nó sẽ cập nhật tất cả các gói khác, có thể không phải là những gì bạn muốn.
run rẩy

3
(1) và (5) có thể được thay thế bằng chạy composer remove vendor/package, tôi nghĩ vậy.
JCarlosR

Cảm ơn bạn, hướng dẫn này rất hữu ích để loại bỏ gói Igaster / laravel-theme không hoạt động
Jjsg08

59

Chạy lệnh sau

composer remove Vendor/Package Name

Đó là tất cả. Không cần cập nhật nhà soạn nhạc. Tên nhà cung cấp / gói chỉ là thư mục được cài đặt trước


1
Tôi đã làm điều này và nó nói rằng nó không còn cần thiết trong composer.json vì vậy 'bỏ qua'
Sweet Chilly Philly

1
composer remove <packageName>Tôi nghĩ rằng cái này là hoàn hảo để loại bỏ bất kỳ gói. Hãy quên đi Vendor:) Ví dụ:composer remove laravel/tinker
Shamsul Huda

43

Thông thường composer removeđược sử dụng như thế này là đủ:

$ composer remove vendor/package

nhưng nếu gói soạn thảo bị xóa và bộ đệm cấu hình không được làm sạch, bạn không thể xóa nó, khi bạn cố gắng như vậy

php artisan config:clear

bạn có thể gặp lỗi In ProviderRepository.php line 208:

Không tìm thấy lớp 'Laracasts \ Flash \ FlashServiceProvider'

đây là một ngõ cụt, trừ khi bạn đi xóa các tập tin

$rm bootstrap/cache/config.php

Và đây là Laravel 5.6 tôi đang nói đến, không phải một số thứ rất cũ.

Nó thường xảy ra khi triển khai tự động, khi bạn sao chép các tệp của một bản phát hành mới trên đầu bộ đệm cũ. Ngay cả khi bạn xóa bộ nhớ cache trước khi sao chép. Bạn kết thúc với bộ đệm cũ và một composer.json mới.


2
Tôi nghĩ rằng nó đã được sửa trong 5.7
Yevgeniy Afanasyev

1
Với 5.6, bootstrap / cache của tôi trống. Tôi quên rằng tôi đã thay đổi đường dẫn bộ đệm (config / cache.php)! Xóa các tập tin trong thư mục bộ đệm mới đã khắc phục vấn đề!
Aine

2
@YevgeniyAfanasyev Điều này không cố định Ngay cả trong 5.7
Shreyansh Panchal

2
Tôi gần như đã dành 3 giờ để nhổ những sợi tóc của mình ra khỏi đây. Tôi nghĩ rằng config:clearsẽ khắc phục điều này.
Shreyansh Panchal

34

bạn có thể xóa bất kỳ gói nào chỉ bằng cách gõ lệnh follwing trong thiết bị đầu cuối và chỉ cần xóa các nhà cung cấp và bí danh bạn đã cung cấp tại thời điểm cài đặt gói, nếu có và cập nhật trình soạn thảo,

composer remove vendor/your_package_name
composer update

1
Đôi khi để cập nhật các phụ thuộc mới, bạn phải cập nhật trình soạn thảo. Tôi nghĩ rằng không có hại trong việc chạy đó.
Shahrukh Anwar

18

Bạn có thể thực hiện bất kỳ một trong hai phương pháp sau:

  1. Chạy lệnh bên dưới (cách được khuyến nghị nhất để xóa gói của bạn mà không cập nhật các gói khác của bạn)

    $ composer remove vendor/package

  2. Chuyển đến tệp composer.json của bạn và sau đó chạy lệnh như bên dưới, nó sẽ xóa gói của bạn (nhưng nó cũng sẽ cập nhật các gói khác của bạn)

    $ composer update


17

Trước khi xóa gói khỏi khai báo composer.json, vui lòng xóa bộ đệm

php artisan cache:clear  
php artisan config:clear 

Nếu bạn quên xóa bộ đệm và bạn gặp lỗi không tìm thấy lớp thì vui lòng cài đặt lại gói và xóa bộ đệm và xóa lại.


16

Cách đơn giản nhất và dễ nhất

Cú pháp:

composer remove <package>

Thí dụ:

composer remove laravel/tinker

15

Nếu bạn vẫn nhận được lỗi sau khi bạn đã thực hiện tất cả các bước trên, hãy chuyển đến các dự án của bạn bootstrap->cache->config.phploại bỏ các mục nhập của nhà cung cấp & bí danh khỏi mảng được lưu trữ theo cách thủ công.


Điều này đã giúp tôi.
Peter Griffin

1
Một số nhà cung cấp gói không đáp ứng tất cả các yêu cầu để tạo ra một gói. Vì lý do đó, các nhà cung cấp composer remove vendor/packagekhông thể loại bỏ các mục bộ đệm đúng cách. Vì vậy, @Ramjith Ap hoàn toàn chính xác ở đây.
Samrat Khan

12

**

sử dụng "nhà soạn nhạc loại bỏ nhà cung cấp / gói"

** Đây là ví dụ: Cài đặt / Thêm Pakage

composer require firebear/importexportfree

Hủy bỏ / Xóa

composer remove firebear/importexportfree

Cuối cùng sau khi loại bỏ:

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

Để loại bỏ một gói bằng cách sử dụng lệnh tổng hợp

composer remove <package>

Để cài đặt gói bằng lệnh composer

composer require <package>

Để cài đặt tất cả các gói được đề cập trong composer.json

composer install

Để cập nhật các gói

composer update

Tôi đã sử dụng chúng cho dự án Laravel


9

Bạn có thể xóa bất kỳ gói nào bằng cách nhập lệnh sau trong terminal và chỉ cần xóa các nhà cung cấp và bí danh bạn đã cung cấp tại thời điểm cài đặt gói và cập nhật trình soạn thảo

composer remove <package_name>
composer update

8

Trong trường hợp các câu trả lời đã cho vẫn không giúp bạn loại bỏ điều đó, hãy thử điều này:

  • Tự xóa các dòng trong requiretừcomposer.json

  • Chạy composer update


3

Chúng tôi đã đi kèm với một giải pháp tuyệt vời. Giải pháp này thực tế được thực hiện trong Laravel 6. Nếu bạn muốn xóa bất kỳ gói nào khỏi Dự án Laravel của mình thì bạn có thể dễ dàng xóa gói bằng cách thực hiện theo các bước sau:

Bước 1: Bạn phải biết tên gói mà bạn muốn xóa. Nếu bạn không biết tên gói hoàn chỉnh thì bạn có thể mở thư mục dự án của mình và đi đến composer.jsontệp và kiểm tra tên yêu cầu một mảng

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

Giả sử, ở đây tôi sẽ xóa gói "fideloper / proxy".

Bước 2 : Mở dấu nhắc lệnh với thư mục thư mục gốc dự án của bạn Bước 3: Trước hết, xóa tất cả bộ đệm bằng các lệnh sau. Chạy từng lệnh một.nhập mô tả hình ảnh ở đây

php artisan cache:clear  
php artisan config:clear 

Bước 4: Bây giờ viết lệnh sau để loại bỏ gói. Ở đây bạn cần thay đổi tên gói của bạn thay vì gói ví dụ của tôi.

composer remove fideloper/proxy

Bây giờ, chờ trong vài giây gói của bạn đang gỡ bỏ.


2
hoặc composer remove laravel/telescope --devnếu đó là gói dev
vinsa

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.