2013-07-18 32 views
5

Giả sử gói của tôi trong Laravel là kiểm tra/kiểm tra.Tạo gói trong bàn làm việc của Laravel, nhưng cách chuyển sang thư mục nhà cung cấp?

Tôi đã tạo gói trong bàn làm việc và nó đang hoạt động tốt sau Jason Lewis' tutorial. Bây giờ tôi muốn di chuyển gói ra khỏi bàn làm việc tới thư mục của nhà cung cấp. Đây là nơi tất cả các hướng dẫn ngắn rơi ngắn, thậm chí cả tài liệu về ấu trùng. Tôi không muốn sử dụng git để di chuyển các tệp, vì vậy tôi chỉ cần sao chép gói thử nghiệm/kiểm tra từ bàn làm việc vào thư mục nhà cung cấp (và sau đó xóa nó khỏi bàn làm việc). Tôi đã không sao chép thư mục test/test/vendor từ bàn làm việc (hoặc bất kỳ tệp nào khác mà tôi nhận thấy trong tệp .gitignore). Sau đó, tôi chạy trình soạn nhạc cài đặt từ thư mục nhà cung cấp/kiểm tra/kiểm tra mới của tôi. Sau đó, tôi đã tạo một trình soạn nhạc tự động tải dump-autoload từ thư mục gốc của laravel.

Bây giờ khi tôi chạy ứng dụng của tôi, tôi nhận được một lỗi mà tôi đã không nhận được khi gói là ở bàn làm việc:

Class 'Test\Test\TestServiceProvider' not found 
(this is coming from \bootstrap\compiled.php on line 4121) 

Tôi cũng đã làm một php nghệ nhân tự đổ autoload từ gốc laravel và Tôi nhận được lỗi này.

Bất kỳ ý tưởng nào? Hoặc ai đó có thể dẫn tôi đến một hướng dẫn mà có sự phát triển gói tất cả các cách để nó là điểm nghỉ ngơi cuối cùng trong thư mục nhà cung cấp?

Trả lời

7

Có hoạt động.

Tôi nói thêm:

"psr-0": { 
    "Test\\Test": "vendor/test/test/src/" 
} 

đến phần autoload trong composer.json trong thư mục gốc laravel để nó trông như thế này:

"autoload": { 
    "classmap": [ 
     "app/commands", 
     "app/controllers", 
     "app/models", 
     "app/database/migrations", 
     "app/database/seeds", 
     "app/tests/TestCase.php" 
    ], 
    "psr-0": { 
     "Test\\Test": "vendor/test/test/src/" 
    }  
}, 

Nếu tôi quyết định đặt các gói trên Packagist sau sau đó tôi có thể loại bỏ điều này khỏi tự động tải và chỉ giữ gói được tham chiếu trong phần "yêu cầu" của composer.json của tôi. Chúng ta sẽ thấy điều gì xảy ra khi tôi đi xa đến vậy!

+0

Mặc dù, nó nằm trong thư mục nhà cung cấp của bạn, được loại trừ khỏi git của bạn cam kết (theo mặc định). Tôi sẽ đề nghị làm một cái gì đó như 'app/lib' vì vậy khi bạn di chuyển đến sản xuất, bạn không cần phải di chuyển nó bằng tay và nó vẫn tồn tại trong repo của bạn. Chỉ cần thay đổi đường dẫn psr-0. – wesside

+0

Tôi chỉ chỉnh sửa tệp .gitignore đó và ngay bên dưới '/ vendor/*' Tôi thêm '!/Vendor/Test' – prograhammer

+0

Cảm ơn vì điều này, tôi đã gặp sự cố tương tự và câu hỏi của bạn đã giải quyết được vấn đề của tôi ngay lập tức. –

0

Tôi nghĩ bạn có thể cài đặt các gói của bạn từ ổ đĩa cứng của bạn, kể từ kho lưu trữ địa phương như thế này:

"repositories": [ 
    { 
     "type":"vcs", 
     "url":"/path/to/repo/here" 
    } 
], 
"require":{ 
    "me/myrepo":"dev-master" 
} 
Các vấn đề liên quan