Skip to main content

Artisan이란

Artisan은 Laravel에 동봉된 커맨드 라인 인터페이스(CLI) 도구입니다. 프로젝트 루트의 artisan 스크립트로 존재하며, 개발·운영을 효율화하는 다수의 명령을 제공합니다. 사용 가능한 명령 목록을 확인하려면 list 명령을 사용합니다.
명령 사용법을 확인하려면 help를 앞에 붙입니다.
Laravel Sail을 사용하는 경우, php artisan 대신 sail artisan을 사용하세요. 명령은 Docker 컨테이너 내에서 실행됩니다.

Tinker

Laravel Tinker는 Eloquent 모델이나 잡, 이벤트 등 애플리케이션 전체를 커맨드 라인상에서 대화형으로 조작할 수 있는 REPL 환경입니다.
시작 후에는 PHP 코드를 그대로 실행할 수 있습니다.
Tinker는 데이터를 실제로 변경합니다. 프로덕션 환경에서의 실행에는 충분히 주의하세요. 로컬이나 스테이징 환경에서의 동작 확인·디버깅 용도에 적합합니다.

커스텀 명령 만들기

명령 생성하기

make:command로 명령 클래스의 스켈레톤을 생성합니다.
app/Console/Commands/ImportProducts.php가 생성됩니다.

명령의 기본 구조

생성된 명령 클래스에는 $signature, $description, handle()이라는 3가지 주요 요소가 있습니다.
Laravel 13에서는 PHP 어트리뷰트를 사용한 작성 방식도 사용할 수 있습니다.

인수와 옵션 정의

$signature에 명령 이름·인수·옵션을 함께 정의합니다.

인수와 옵션 취득

handle() 메서드 내에서 argument()option()을 사용하여 값을 취득합니다.

input() — 타입 액세서

input() 메서드를 사용하면 HTTP 요청과 동일한 타입 액세서로 명령의 인수나 옵션을 취득할 수 있습니다.
특정 이름만 취득하고 싶다면 이름을 직접 전달합니다(인수와 옵션 양쪽에서 검색됩니다).
argument()option()이 문자열을 반환하는 데 비해, input()의 타입 액세서는 적절한 타입으로 변환합니다. 날짜·수치·Enum 등 타입 안전하게 다루고 싶은 경우에 편리합니다.

사용자와의 상호작용

메시지 출력

콘솔에 색상이 있는 메시지를 출력하는 메서드가 준비되어 있습니다.

사용자에게 질의

대화적으로 사용자로부터 입력을 받을 수 있습니다.

진행률 바

대량 데이터 처리 중 진행 상황을 알기 쉽게 표시할 수 있습니다.
수동으로 세밀하게 제어하고 싶다면 다음 방법을 사용합니다.

실용적인 유즈케이스

데이터 임포트 명령

CSV 파일에서 상품 데이터를 임포트하는 실전적인 명령의 예입니다.
1

명령 생성하기

2

명령 구현하기

3

명령 실행하기

정기 유지보수 명령

오래된 데이터 삭제 등, 정기적으로 실행하는 유지보수 명령의 예입니다.

스케줄 실행과 조합

작성한 명령은 routes/console.php에서 스케줄 실행할 수 있습니다. 자세한 내용은 작업 스케줄링을 참조하세요.

명령 테스트

Laravel의 테스트 기능을 사용하여 Artisan 명령의 동작을 검증할 수 있습니다.
artisan() 메서드에서 사용 가능한 어서션 메서드의 예:

dev 명령

dev Artisan 명령은, 로컬 개발에 필요한 여러 프로세스를 하나의 터미널 창에서 함께 시작합니다. 기본적으로 PHP 개발 서버·큐 워커·Pail에 의한 로그 모니터링·Vite의 에셋 컴파일이 병렬로 실행됩니다.
내부적으로는 concurrently라는 npm 패키지를 사용하여 프로세스를 관리합니다. 각 프로세스는 라벨링되고 색상으로 구분되므로, 터미널 출력에서 어떤 프로세스인지 쉽게 구별할 수 있습니다. 어느 프로세스가 실패하면 다른 모든 프로세스도 자동으로 정지됩니다. 기본으로 실행되는 프로세스는 다음과 같습니다.
vite 프로세스는 사용 중인 Node 패키지 매니저(npm, pnpm, Yarn, Bun)를 자동 감지하여 적절한 실행 명령을 사용합니다.

dev 프로세스 커스터마이징

dev 명령이 실행하는 프로세스는 DevCommands 클래스를 사용하여 커스터마이즈할 수 있습니다. 보통 애플리케이션의 AppServiceProviderboot 메서드 내에서 등록합니다. register 메서드는 명령 문자열과 임의의 프로세스명을 받습니다.
Artisan 명령을 등록할 때는 자동으로 php artisan을 앞에 붙여주는 artisan 메서드를 사용할 수 있습니다.
마찬가지로 node 메서드는 감지된 패키지 매니저의 실행 명령(예: npm run)을, nodeExec 메서드는 패키지 매니저의 exec 명령(예: npx)을 앞에 붙입니다.
기본 프로세스와 같은 이름으로 프로세스를 등록하면 해당 기본 프로세스를 치환합니다. 예를 들어 서버 프로세스를 다른 포트로 사용하도록 커스터마이즈할 수 있습니다.
터미널에서의 프로세스 라벨 색상도 커스터마이즈할 수 있습니다. 이용 가능한 색상 메서드는 blue, purple, pink, orange, green, yellow입니다. color 메서드에 커스텀 hex 컬러를 전달할 수도 있습니다.
등록된 dev 프로세스를 실제로 시작하지 않고 목록만 표시하고 싶다면 dev:list 명령을 사용합니다.

dev 프로세스 필터링

only 메서드를 사용하면 dev 명령 실행 시 특정 프로세스만 시작하도록 지정할 수 있습니다. 마찬가지로 except 메서드로 특정 프로세스를 제외할 수도 있습니다.
로컬 개발에서 Horizon이나 Reverb 등을 함께 사용하는 경우, DevCommands::artisan()으로 등록해 두면 php artisan dev 하나로 모두 시작할 수 있어 편리합니다.

자주 사용하는 명령 정리

마지막 수정일 2026년 8월 2일