2013-02-20 42 views
5

Bất cứ khi nào tôi làm composer.phar cài đặt nó sẽ xóa bộ nhớ cache dev của Symfony.Composer.phar Symfony xóa bộ nhớ cache

Có cách nào để tôi có thể xóa bộ nhớ cache của môi trường khác, chẳng hạn như sản xuất nói không? Tôi biết tôi luôn có thể chạy bộ nhớ cache của ứng dụng/bảng điều khiển: clear --env = prod. Nhưng tôi muốn Composer xử lý điều đó sau khi lấy các phụ thuộc.

Trả lời

5

Trong composer.json của bạn, bạn sẽ tìm thấy một phần "kịch bản", mà nên tìm kiếm một cái gì đó như thế này:

"scripts": { 
    "post-install-cmd": [ 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" 
    ], 
    "post-update-cmd": [ 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", 
     "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" 
    ] 
} 

Như bạn có thể thấy tất cả các lệnh được lưu trữ trong một tập tin duy nhất, Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache() là những gì bạn đang tìm kiếm.

Vì các tập lệnh này có nghĩa là để chạy mà không có sự can thiệp của người dùng, bạn không có ý định thêm đối số. Tuy nhiên, bạn có thể dễ dàng thêm tập lệnh của riêng mình hoặc thay thế tập lệnh hiện có.

chỉnh sửa: Đoạn cuối cùng tôi nên diễn giải lại. Bạn có thể có đối số, nhưng chúng được định nghĩa tĩnh trong composer.json của bạn. Các giá trị được xác định trong phần bổ sung, ví dụ: "symfony-web-dir", là các đối số được ScriptHandler sử dụng. Chúng có thể được lấy từ CommandEvent của nhà soạn nhạc như có thể thấy trong ScriptHandler::getOptions(). Vì vậy, bạn có thể ví dụ xác định một mảng các môi trường sẽ được xóa trên mỗi lần cài đặt/cập nhật trong "extra", truy xuất nó trong tập lệnh của bạn và sau đó gọi lệnh bộ nhớ cache rõ ràng cho từng môi trường được chỉ định. Có thể cung cấp các giá trị qua environment variables có thể có ý nghĩa hơn trong kịch bản của bạn, nhưng điều này sẽ yêu cầu đào sâu vào nhà soạn nhạc vì cấu hình không giải thích cách ghi đè giá trị ví dụ trong phần bổ sung.

1

Tôi tìm thấy câu trả lời này trong khi tìm cách thiết lập tùy chọn liên kết nội dung sau bản cập nhật nhà soạn nhạc.

Bạn có thể làm điều đó thêm một "symfony-tài sản-cài đặt" vào trong nút thêm tập tin composer.json bạn

"extra": { 
    "symfony-app-dir": "app", 
    "symfony-web-dir": "web", 
    "symfony-assets-install": "symlink" 
} 

src: Updating Vendors

+0

Nó đã có hữu ích để nói trước với các entry thêm. – Alsciende

+1

được cập nhật để nói cái nào – Axi

Các vấn đề liên quan