Django 프로젝트용 Makefile

개발 프로세스 중에 마이그레이션 생성, 테스트 실행, linter 실행 등 터미널에서 일부 명령을 실행해야 하는 경우가 종종 있습니다. 일반적으로 이러한 명령은 정기적으로 실행됩니다.




이러한 명령에 대한 단축키가 있으면 유용합니다. 그리고 프로젝트의 다른 개발자들과 공유하는 것이 더 좋습니다. 이 목표를 위해 Makefile 을 사용합니다. 다음은 Django 프로젝트에 유용한 명령 목록입니다.



종속성 설치



나는 Poetry의 열렬한 팬이 아닙니다. 그것은 Dependabot과 함께 some problems을 가지고 있으며 Renovate과 전혀 놀지 않습니다. pip-tools을 로컬 및 프로덕션 환경에 대해 별도의 requirements.inrequirements-dev.in와 함께 사용합니다.




pip-install-dev:
    pip install --upgrade pip pip-tools
    pip-sync requirements.txt requirements-dev.txt

pip-install:
    pip install --upgrade pip pip-tools
    pip-sync requirements.txt

pip-update:
    pip install --upgrade pip pip-tools
    pip-compile requirements.in
    pip-compile requirements-dev.in
    pip-sync requirements.txt requirements-dev.txt


명령:



  • pip-install-dev : 로컬을 포함하여 모든 요구 사항을 설치합니다. 프로젝트의 의존성을 설치하기 위한 메인 명령어이므로 이 명령어를 맨 위에 두었습니다.
  • pip-install - 저는 이 명령을 자주 사용하지 않지만 프로덕션 종속성에서만 코드를 실행하는 것이 도움이 될 수 있습니다.
  • pip-update requirements.txt 또는 requirements-dev.txt에 새 패키지를 추가한 후 requirements.inrequirements-dev.in를 업데이트합니다.


프로젝트 실행




server:
    python manage.py migrate && python manage.py runserver

worker:
    python -m celery -A project_name worker --loglevel info

beat:
    python -m celery -A project_name beat --loglevel info


그건 분명한 사실입니다. 로컬 웹 서버를 실행하는 명령 및 Celery . 또한 서버를 실행할 때 자동으로 새로운 마이그레이션을 적용하는 것을 좋아합니다.



린터 실행




lint:
    flake8 palyanytsya
    mypy palyanytsya

black:
    python -m black palyanytsya

cleanimports:
    isort .
    autoflake -r -i --remove-all-unused-imports --ignore-init-module-imports project_name

clean-lint: cleanimports black lint

checkmigrations:
    python manage.py makemigrations --check --no-input --dry-run


명령:



  • lint : flake8 linter 및 mypy 유형 검사기를 실행합니다.
  • black : Black을 사용한 자동 코드 서식 지정.
  • cleanimports : isort을 실행하고 Autoflake을 사용하여 사용하지 않은 가져오기를 제거합니다. 블랙과의 충돌을 피하기 위해 isort 설정에서 profile=black를 설정하십시오.
  • clean-lint : 위의 모든 항목을 실행합니다. 코드 형식을 올바르게 지정하기 전에 이 명령을 실행할 수 있습니다.
  • checkmigrations : 마이그레이션 없이 모델 변경을 커밋할 수 없습니다. 정말 멋진 물건!


또한 CI 파이프라인과 git 사전 커밋 후크에서 make lint && make checkmigrations를 사용합니다. 이러한 후크를 설정하기 위한 명령을 만들 수도 있습니다.




install-hooks:
    echo "make lint && make checkmigrations" > .git/hooks/pre-commit && chmod 777 .git/hooks/pre-commit


테스트 실행




test:
    pytest -n 4 -x


pytest을 사용하여 다중 프로세스 모드에서 실행합니다pytest-xdist.



메시지 컴파일




messages:
    python manage.py makemessages --all --ignore=venv --extension html,py
    python manage.py translate_messages -s en -l uk -l es -u
    python manage.py compilemessages --ignore venv


translation에 대한 모든 문자열 리터럴을 수집합니다. 또한 Google 번역을 사용하여 구문을 자동으로 번역하는 데 Django Autotranslate을 사용합니다.





프로젝트가 진행되는 한 새로운 로컬 명령이 나타납니다. 어쩌면 파이썬 코드를 실행하기 위해 dev 서버에 쉘을 넣어야 할 수도 있습니다. 또는 로컬 버그 재생산을 위해 새로운 데이터베이스 덤프(민감한 데이터 제외)를 다운로드하십시오. 이 지식은 머리가 아닌 코드베이스에 보관하는 것이 좋습니다. 또한 동료에게 정확히 동일한 작업을 수행하는 방법을 설명할 필요가 없습니다.



보다 복잡한 작업의 경우 쉘 스크립트를 만들고 Makefile에서 호출할 수도 있습니다. 따라서 다른 개발자를 위해 이 새로운 명령을 찾는 것이 더 쉬울 것입니다.

좋은 웹페이지 즐겨찾기