Chủ Nhật, 3 tháng 5, 2020

Tổ chức Project Laravel theo dạng Packages/Modules

Source: https://getcomposer.org/doc/05-repositories.md#path
Trong bài này chúng ta sẽ tạo module local cho project laravel của bạn.
Đầu tiên hãy tạo một project mới bằng command trong terminal:
  • composer create-project --prefer-dist laravel/laravel project_module
Sau đó hãy mở command line trong project vừa tạo, ở đây mình sử dụng powersell bạn giữu "Shift + mouse right".
Powershell
Tiếp theo bạn tạo một folder chứa các modules trong project ở đây mình để là: 
  • /modules/demo
Di chuyển vào trong thư mục demo và chạy lệnh composer init và điền các thông tin như sau:
Kết quả sẽ ra được như này:
{
    "name""modules/demo",
    "description""Module demo",
    "type""mudule",
    "license""MIT",
    "authors": [
        {
            "name""example",
            "email""example@email.com"
        }
    ],
    "minimum-stability""dev",
    "require": {}
}
Bạn có thể sửa hoặc thêm các package trong phần require.
Thêm autoload cho module vào file composer.json ở thư mục module/demo như sau:
{
    "name""modules/demo",
    "description""Module demo",
    "type""mudule",
    "license""MIT",
    "authors": [
        {
            "name""example",
            "email""example@email.com"
        }
    ],
    "minimum-stability""dev",
    "require": {},
    "autoload": {
        "psr-4": {
          "Modules\\Demo\\""src/"
        }
    }
}
Laravel có hỗ trợ package auto discover tự động nạp service provider như sau:
{
    "name""modules/demo",
    "description""Module demo",
    "type""mudule",
    "license""MIT",
    "authors": [
        {
            "name""example",
            "email""example@email.com"
        }
    ],
    "minimum-stability""dev",
    "require": {},
    "autoload": {
        "psr-4": {
          "Modules\\Demo\\""src/"
        }
    },
    "extra": {
        "laravel": {
          "providers": [
            "Modules\\Demo\\Providers\\DemoServiceProvider"
          ]
        }
    }
}
Như vậy là đã có một package local trong project của bạn, muốn sử dụng được package phải khai báo package trong file composer.json của root project như sau:
    "require": {
        "php""^7.2.5",
        "fideloper/proxy""^4.2",
        "fruitcake/laravel-cors""^1.0",
        "guzzlehttp/guzzle""^6.3",
        "laravel/framework""^7.0",
        "laravel/tinker""^2.0",
        "modules/demo""*@dev"
    },
Khai báo module/package "modules/demo""*@dev" trong block require
Khai báo đường dẫn tới package để composer có thể tìm thấy và cài đặt.
"repositories": [
        {
           "type""path",
           "url""./modules/demo"
        }
    ]
Cuối cùng chạy lệnh Composer update và xem kết quả.
Source: https://github.com/duynv1008/project_module

0 nhận xét:

Đăng nhận xét

Bài viết mới

Giới Thiệu Gumroad và Cơ Hội Đăng Ký Nội Dung Đặc Biệt Của Tôi

     Trong thế giới kỹ thuật số ngày nay, việc dễ dàng tiếp cận các tài nguyên học tập và công cụ hỗ trợ là rất quan trọng. Đó chính là lý d...

Bài đăng