Skip to main content

什麼是 Artisan

Artisan 是 Laravel 隨附的命令列介面(CLI)工具。 它以專案根目錄的 artisan script 存在,提供多個能有效率地進行開發、運維的指令。 要確認可用指令清單,使用 list 指令。
要確認指令的用法,於前面加上 help
若使用 Laravel Sail,請以 sail artisan 代替 php artisan。 指令會於 Docker 容器內執行。

Tinker

Laravel Tinker 是可於命令列上互動式操作 Eloquent 模型、Job、事件等整個應用程式的 REPL 環境。
啟動後即可直接執行 PHP 程式碼。
Tinker 會實際變更資料。於正式環境執行請充分留意。 適合本地或 stg 環境的行為確認、除錯用途。

建立自訂指令

產生指令

make:command 產生指令類別範本。
會產生 app/Console/Commands/ImportProducts.php

指令的基本結構

產生的指令類別具有 $signature$descriptionhandle() 3 個主要要素。
於 Laravel 13 也可使用 PHP Attribute 的寫法。

引數與選項的定義

$signature 一併定義指令名稱、引數、選項。

引數與選項的取得

handle() 方法內以 argument()option() 取得值。

input() — 型別化的存取子

使用 input() 方法,可以與 HTTP Request 相同的型別化存取子取得指令的引數或選項。
若僅要取得特定名稱,可直接傳入名稱(會同時從引數與選項中搜尋)。
相較於 argument()option() 回傳字串,input() 的型別化存取子會轉換為適當的型別。想以型別安全處理日期、數值、Enum 等時很方便。

與使用者的互動

訊息的輸出

備有輸出彩色訊息至 Console 的方法。

對使用者的詢問

可以互動式地接收使用者輸入。

進度條

於大量資料處理中可清楚顯示進度。
若要手動精細控制,使用以下方法。

實務使用情境

資料匯入指令

以下為從 CSV 檔匯入商品資料的實用指令範例。
1

產生指令

2

實作指令

3

執行指令

定期維護指令

以下為刪除舊資料等定期執行的維護指令範例。

與排程執行的組合

建立的指令可於 routes/console.php 排程執行。 詳情請參考Task Scheduling

指令的測試

可使用 Laravel 的測試功能驗證 Artisan 指令的行為。
artisan() 方法可用的斷言方法範例:

dev 指令

dev Artisan 指令將本地開發所需的多個 Process 於單一終端機視窗一併啟動。預設會平行執行 PHP 開發伺服器、Queue Worker、Pail 日誌監視、Vite 資產編譯。
內部使用名為 concurrently 的 npm 套件管理 Process。各 Process 會被標示標籤與顏色區分,於終端機輸出可輕易辨識。若任一 Process 失敗,其他所有 Process 也會自動停止。 預設執行的 Process 如下。
vite process 會自動偵測所使用的 Node 套件管理器(npm、pnpm、Yarn、Bun)並使用適當的執行指令。

dev process 的自訂

dev 指令執行的 Process 可以透過 DevCommands 類別自訂。通常於應用程式 AppServiceProviderboot 方法內註冊。register 方法接收指令字串與任意的 Process 名稱。
要註冊 Artisan 指令時,可使用會自動前置 php artisanartisan 方法。
同樣地,node 方法會前置偵測到之套件管理器的執行指令(如 npm run),nodeExec 方法會前置套件管理器的 exec 指令(如 npx)。
若以與預設 Process 相同名稱註冊 Process,會替換該預設 Process。例如可自訂 server process 使用其他 port。
終端機中 Process 標籤的顏色也可自訂。可用的顏色方法有 bluepurplepinkorangegreenyellow。也可對 color 方法傳入自訂的 hex 色碼。
若希望列出已註冊的 dev process 而不實際啟動,可使用 dev:list 指令。

dev process 的過濾

使用 only 方法可指定於執行 dev 指令時僅啟動特定 Process。同樣地,可用 except 方法排除特定 Process。
若於本地開發併用 Horizon 或 Reverb 等,透過 DevCommands::artisan() 註冊後,即可以單一 php artisan dev 一次啟動所有 Process 非常方便。

常用指令彙整

最後修改於 2026年8月2日