DEV Community

Cover image for Laravel Package Starter Kits
Atthaphon Urairat
Atthaphon Urairat

Posted on

Laravel Package Starter Kits

เอา Repository มาแชร์ครับ พอดีช่วงนี้ดูทรงแล้วน่าจะได้เขียน package เรื่อยๆ เลยทำตัว starter kits เอาไว้เลย ก็เลยอยากเอามาแชร์เผื่อเป็นประโยชน์กับเพื่อนๆ ครับ

เข้าไปดูดได้จาก https://github.com/uatthaphon/laravel-package-starter-kits

ไปดูกันเลยครับ

Table of contents

Laravel Package Starter Kits

ชุดตั้งต้นใช้สำหรับการเริ่มสร้าง Laravel Package

Directory Structure 🗂️

- src
- tests
CHANGELOG.md
README.md
LICENSE
composer.json
Enter fullscreen mode Exit fullscreen mode

Package Skeleton 🦴

สำหรับการเริ่มต้นสร้าง package เราไม่จำเป็นที่จะต้องวาง package ของเราเอาไว้ใน laravel project folder ก็ได้

ผมแนะนำให้เราสร้าง folder package วางไว้ในระดับเดียวกันกับ folder ของ laravel project ที่เราจะเอาไว้ใช้ทดสอบ package ของเรา

ตัวอย่างเช่น ผมสร้าง package เอาไว้ที่ ~/packges/ โดยที่ตัว folder ของ laravel ผมก็วางเอาไว้ที่ระดับเดียวกันกับ package ก็ได้ ~/laravel-website

Development Environment 🌱

ให้เราปรับแก้ไฟล์ต่างๆ ที่มีอยู่ใน Directory Structure ตามความต้องการได้เลย

การ import package ที่เรากำลังพัฒนาเข้าไปใน laravel project ซึ่งอยู่บนเครื่องของเราแบบ locally 🏠

ตัวอย่างเช่น ในกรณีที่เราวาง package ที่เราสร้างไว้ในระดับเดียวกันกับ laravel project ที่เรากำลังพัฒนา

/packages/my-package
/laravel-website
Enter fullscreen mode Exit fullscreen mode

เราสามารถเรียก package ที่อยู่บนเครื่อง local ของเราได้ตามตัวอย่างด้านล่างนี้ได้

// laravel-website/composer.json

{
  "scripts": { ... },

  "repositories": [
    {
      "type": "path",
      "url": "../packages/my-package"
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

จากนั้นเราต้องทำการเรียกคำสั่ง composer require เพื่อเพิ่ม package ที่เรากำลังทำการพัฒนาให้เข้ามารวมอยู่ใน autoload ด้วยคำสั่งด้านล่างนี้ครับ

ชื่อของ pacakge ก็ตามที่เราตั้งเอาไว้ใน composer.json เลยครับ เช่นของผมตั้งไว้ว่า

// laravel-website/composer.json

{
    "name": "uatthaphon/packagename"
    ...
},
Enter fullscreen mode Exit fullscreen mode

ผมก็รันคำสั่งเรียกเป็น

comsopser require uatthaphon/packagename
Enter fullscreen mode Exit fullscreen mode

สิ่งที่ต้องปรับเปลี่ยนก่อนทำการ Coding ✅

  • [ ] แก้ข้อมูลใน LICENSE ไฟล์
// LICENSE

Copyright (c) Atthaphon Urairat <- เปลี่ยนตรงนี้ครับ
Enter fullscreen mode Exit fullscreen mode
  • [ ] แก้ข้อมูลใน composer.json
// pacakges/my-package/composer.json

{
    "name": "uatthaphon/package-name", <- เปลี่ยนตรงนี้ครับ

    ...

    "authors": [
        {
            "name": "Atthaphon Urairat", <- เปลี่ยนตรงนี้ครับ
            "email": "u.atthaphon@gmail.com" <- เปลี่ยนตรงนี้ครับ
        }
    ],

    ...
    "autoload": {
        "psr-4": {
            "Uatthaphon\\PackageName\\": "src" <- เปลี่ยนตรงนี้ครับ
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Uatthaphon\\PackageName\\Tests\\": "tests" <- เปลี่ยนตรงนี้ครับ
        }
    },

    ...

    "extra": {
        "laravel": {
            "providers": [
                "Uatthaphon\\PackageName\\PackageNameServiceProvider" <- เปลี่ยนตรงนี้ครับ
            ]
        }
    },
}

Enter fullscreen mode Exit fullscreen mode
  • [ ] แก้ชื่อไฟล์ตั้งต้น และ namespace

ชื่อของไฟล์ที่ต้องเปลี่ยน

src/PackageNameServiceProvider.php
Enter fullscreen mode Exit fullscreen mode

namespace ที่ต้องเปลี่ยน

// src/PackageNameServiceProvider.php

<?php

namespace Uatthaphon\PackageName; <- เปลี่ยนตรงนี้คร

Enter fullscreen mode Exit fullscreen mode

Happy Coding ครับ 🥰🥰🥰

อีกนิดครับ ใน composer.json มี script ที่เอาไว้รัน test แล้วครับ ดังนั้นเราไม่ต้องเพิ่มคำสั่งยาวๆอย่าง ./vendor/phpunit/phpunit/phpunit เพื่อทำการเทสนะครับ ให้ใช้คำสั่งนี้ก็พอ

composer test

composer testUnit

composer testFeature

composer testVerbose

Enter fullscreen mode Exit fullscreen mode

License

The MIT License (MIT). Please see License File for more information.

Discussion (0)