什麼是 Artisan
Artisan 是 Laravel 隨附的命令列介面(CLI)工具。 它以專案根目錄的artisan script 存在,提供多個能有效率地進行開發、運維的指令。
要確認可用指令清單,使用 list 指令。
help。
若使用 Laravel Sail,請以
sail artisan 代替 php artisan。
指令會於 Docker 容器內執行。Tinker
Laravel Tinker 是可於命令列上互動式操作 Eloquent 模型、Job、事件等整個應用程式的 REPL 環境。建立自訂指令
產生指令
以make:command 產生指令類別範本。
app/Console/Commands/ImportProducts.php。
指令的基本結構
產生的指令類別具有$signature、$description、handle() 3 個主要要素。
於 Laravel 13 也可使用 PHP Attribute 的寫法。
引數與選項的定義
於$signature 一併定義指令名稱、引數、選項。
引數與選項的取得
於handle() 方法內以 argument() 與 option() 取得值。
input() — 型別化的存取子
使用 input() 方法,可以與 HTTP Request 相同的型別化存取子取得指令的引數或選項。
與使用者的互動
訊息的輸出
備有輸出彩色訊息至 Console 的方法。對使用者的詢問
可以互動式地接收使用者輸入。進度條
於大量資料處理中可清楚顯示進度。實務使用情境
資料匯入指令
以下為從 CSV 檔匯入商品資料的實用指令範例。1
產生指令
2
實作指令
3
執行指令
定期維護指令
以下為刪除舊資料等定期執行的維護指令範例。與排程執行的組合
建立的指令可於routes/console.php 排程執行。
詳情請參考Task Scheduling。
指令的測試
可使用 Laravel 的測試功能驗證 Artisan 指令的行為。artisan() 方法可用的斷言方法範例:dev 指令
dev Artisan 指令將本地開發所需的多個 Process 於單一終端機視窗一併啟動。預設會平行執行 PHP 開發伺服器、Queue Worker、Pail 日誌監視、Vite 資產編譯。
@laravel/multiplex npm 套件來管理 Process。各 Process 會被分配到一個 tab,可以搜尋並捲動其輸出。若 Process 崩潰會自動重啟,離開時輸出會被寫回終端機的 scrollback,因此不會遺失日誌。
dev 指令需要 Node.js 22.13 以上版本。在 Windows 上會回退到 concurrently npm 套件,因此無法使用 tab 型 UI。
預設執行的 Process 如下。
vite process 會自動偵測所使用的 Node 套件管理器(npm、pnpm、Yarn、Bun)並使用適當的執行指令。--no-restart。
dev process 的自訂
dev 指令執行的 Process 可以透過 DevCommands 類別自訂。通常於應用程式 AppServiceProvider 的 boot 方法內註冊。register 方法接收指令字串與任意的 Process 名稱。
php artisan 的 artisan 方法。
node 方法會前置偵測到之套件管理器的執行指令(如 npm run),nodeExec 方法會前置套件管理器的 exec 指令(如 npx)。
blue、purple、pink、orange、green、yellow。也可對 color 方法傳入自訂的 hex 色碼。
dev process 而不實際啟動,可使用 dev:list 指令。
dev process 的過濾
使用 only 方法可指定於執行 dev 指令時僅啟動特定 Process。同樣地,可用 except 方法排除特定 Process。