2016-04-09 16 views
5

Próbuję pobrać zależności Laravel HTML z Composer.Komenda "clear-compiled" nie jest zdefiniowana. Laravel 5.2

composer.json jest tutaj:

"name": "laravel/laravel", 
    "description": "The Laravel Framework.", 
    "keywords": ["framework", "laravel"], 
    "license": "MIT", 
    "type": "project", 
    "require": { 
     "php": ">=5.5.9", 
     "laravel/framework": "5.2.*", 
     "illuminate/html": "5.2" 
    }, 

A kiedy biegnę composer update lub php composer update, dziennik terminal jest:

E:\xampp\htdocs\lara-test>composer update 
> php artisan clear-compiled 

    [InvalidArgumentException] 
    Command "clear-compiled" is not defined. 

Script php artisan clear-compiled handling the pre-update-cmd event returned with an error 

    [RuntimeException] 
    Error Output: 

update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] 
[--no-plugins] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no- 
progress] [--with-dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] 
[-a|--classmap-authoritative] [--ignore-platform-reqs] [--prefer-stable] [--pre 
fer-lowest] [-i|--interactive] [--] [<packages>]... 

Czego brakuje? Proszę o pomoc.

+3

spróbuj "aktualizacji kompozytora --no-skrypty" – Drudge

+1

Dzięki, działa. Ale czym jest '--no scripts' ?? – Jitendra

Odpowiedz

9

Można obejść to, używając polecenia composer update --no-scripts, które uruchamia polecenie aktualizacji od kompozytora bez wykonywania skryptów zdefiniowanych w pliku composer.json.

W ramach wykonywania composer update jest wykonywany skrypt, który uruchamia php artisan clear-compiled - efektywnie aktualizacja działa normalnie, po prostu bez usuwania skompilowanych plików.

Istnieje kilka blogach na innych arounds pracy: http://jianjye.com/fix-command-clear-compiled-not-defined-error-upgrading-laravel-5-2/ i problem zalogowany https://github.com/laravel/framework/issues/9678

+0

Dziękuję, to mi bardzo pomogło. – raphael

+0

@raphael, jeśli uznałeś to za pomocne, czy mógłbyś głosować? – James

+0

Pewnie, @ James. Gotowe! – raphael

0

Obecna odpowiedź tutaj nie spełnia kogoś, kto chce wykonywać clear-compiled działania. Oto rozwiązanie równoważną skrypcie (zaczerpnięte z https://github.com/laravel/framework/issues/9678)

Utwórz skrypt w folderze głównym na laravel zadzwonił clear-compiled z treścią:

#!/usr/bin/env php 
<?php 
foreach (glob(__DIR__ . '/bootstrap/cache/*.*') as $file) { 
    @unlink($file); 
} 
echo 'Cleared compiled directory.'; 
exit(); 

Następnie w composer.json zmień php artisan clear-compiled do php clear-compiled:

"scripts": { 
    "pre-install-cmd": [ 
     "php clear-compiled" 
    ], 
    "post-install-cmd": [ 
     "php clear-compiled" 
    ] 
},