Quay lại

Sử Dụng Makefile Trong Laravel Để Tự Động Hóa Quy Trình Công Việc Chuyên mục PHP và Laravel    2024-06-04    489 Lượt xem    16 Lượt thích    comment-3 Created with Sketch Beta. 0 Bình luận

Sử Dụng Makefile Trong Laravel Để Tự Động Hóa Quy Trình Công Việc

Laravel là một framework PHP mạnh mẽ, được sử dụng rộng rãi để phát triển các ứng dụng web. Trong quá trình phát triển, việc tự động hóa các tác vụ thường gặp như cài đặt phụ thuộc, chạy kiểm thử, xây dựng và triển khai ứng dụng là rất quan trọng để nâng cao hiệu quả làm việc và giảm thiểu lỗi. Một công cụ hữu ích để thực hiện điều này là Makefile.

Makefile là một tệp cấu hình đặc biệt được sử dụng bởi công cụ make, cho phép bạn định nghĩa và quản lý các tác vụ tự động hóa thông qua các lệnh đơn giản. Khi sử dụng Makefile trong dự án Laravel, bạn có thể tạo ra các lệnh tùy chỉnh để thực hiện các tác vụ thường gặp chỉ với một câu lệnh duy nhất, giúp tiết kiệm thời gian và công sức.

Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo và sử dụng Makefile để tự động hóa các quy trình công việc phổ biến trong dự án Laravel, bao gồm cài đặt phụ thuộc, chạy kiểm thử, và triển khai ứng dụng.

Tạo Makefile

Để tạo một Makefile trong dự án Laravel, bạn cần tạo một file tên là Makefile trong thư mục gốc của dự án. Dưới đây là một ví dụ về nội dung của Makefile với các lệnh cơ bản để tự động hóa các tác vụ thường gặp:

# Makefile cho dự án Laravel

# Biến cho composer và php
COMPOSER = composer
PHP = php

# Cài đặt các phụ thuộc của dự án
install:
	$(COMPOSER) install

# Chạy kiểm thử
test:
	$(PHP) artisan test

# Khởi động máy chủ phát triển
serve:
	$(PHP) artisan serve

# Tạo các lệnh tùy chỉnh khác
migrate:
	$(PHP) artisan migrate

seed:
	$(PHP) artisan db:seed

cache-clear:
	$(PHP) artisan cache:clear

# Xóa cache và khởi động lại
refresh: cache-clear migrate seed

Sử dụng Makefile

Sau khi tạo xong Makefile, bạn có thể sử dụng các lệnh được định nghĩa bên trong Makefile bằng cách sử dụng lệnh make từ dòng lệnh. Dưới đây là một số ví dụ:

  1. Cài đặt các phụ thuộc của dự án:

    make install​
  2. Chạy kiểm thử:

    make test​
  3. Khởi động máy chủ:

    make serve​
  4. Thực hiện di chuyển cơ sở dữ liệu:

    make migrate​
  5. Seed dữ liệu vào cơ sở dữ liệu:

    make seed​
  6. Xóa cache:

    make cache-clear​
  7. Xóa cache, thực hiện di chuyển cơ sở dữ liệu và seed lại dữ liệu:

    make refresh​

Lợi ích của việc sử dụng Makefile trong Laravel

  • Tự động hóa: Giúp tự động hóa các tác vụ thường gặp, giảm thiểu sai sót do thực hiện thủ công.
  • Đơn giản hóa: Các lệnh phức tạp có thể được đơn giản hóa thành các lệnh ngắn gọn và dễ nhớ.
  • Nhất quán: Đảm bảo rằng mọi thành viên trong nhóm đều sử dụng cùng một tập lệnh để thực hiện các tác vụ.
  • Tăng năng suất: Giảm thời gian thực hiện các tác vụ lặp đi lặp lại, giúp bạn tập trung vào phát triển tính năng.

Với Makefile, bạn có thể dễ dàng quản lý và tự động hóa các quy trình công việc trong dự án Laravel của mình, giúp nâng cao hiệu quả làm việc và đảm bảo tính nhất quán trong phát triển.

Dưới đây là Makefile example khi chúng ta sử dụng cùng với docker:

.PHONY: help ps fresh build start stop destroy tests tests-html migrate \
	migrate-fresh migrate-tests-fresh install-xdebug create-env

CONTAINER_PHP=api
VOLUME_DATABASE=db-data
VOLUME_DATABASE_TESTING=db-testing-data

help: ## Print help.
	@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n  make \033[36m<target>\033[0m\n\nTargets:\n"} /^[a-zA-Z_-]+:.*?##/ { printf "  \033[36m%-10s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST)

ps: ## Show containers.
	@docker compose ps

fresh: stop destroy build start ## Destroy & recreate all containers.

build: create-env ## Build all containers.
	@docker compose build --no-cache

start: create-env ## Start all containers.
	@docker compose up --force-recreate -d

stop: create-env ## Stop all containers.
	@docker compose down

destroy: create-env stop ## Destroy all containers.
	@docker compose down
	@if [ "$(shell docker volume ls --filter name=${VOLUME_DATABASE} --format {{.Name}})" ]; then \
		docker volume rm ${VOLUME_DATABASE}; \
	fi

	@if [ "$(shell docker volume ls --filter name=${VOLUME_DATABASE_TESTING} --format {{.Name}})" ]; then \
		docker volume rm ${VOLUME_DATABASE_TESTING}; \
	fi

tests: ## Run all tests.
	docker exec ${CONTAINER_PHP} ./vendor/bin/phpunit

tests-html: ## Run tests + generate coverage.
	docker exec ${CONTAINER_PHP} php -d zend_extension=xdebug.so -d xdebug.mode=coverage ./vendor/bin/phpunit --coverage-html reports

migrate: ## Run migration files.
	docker exec ${CONTAINER_PHP} php artisan migrate

migrate-fresh: ## Clear database and run all migrations.
	docker exec ${CONTAINER_PHP} php artisan migrate:fresh

migrate-tests-fresh: ## Clear database and run all migrations.
	docker exec ${CONTAINER_PHP} php artisan --env=testing migrate:fresh

install-xdebug: ## Install xdebug locally.
	docker exec ${CONTAINER_PHP} pecl install xdebug
	docker exec ${CONTAINER_PHP} /usr/local/bin/docker-php-ext-enable xdebug.so

create-env: ## Copy .env.example to .env
	@if [ ! -f ".env" ]; then \
		echo "Creating .env file."; \
		cp .env.example .env; \
	fi

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough

Bài viết liên quan

Learning English Everyday