Visual Studio 코드 작업 및 버스트 터미널
그래서 Visual Studio Code의 큰 팬으로서 저는 계속 사용하고 있습니다tasks feature.최근(2019년 1월 1.31일)의 업데이트에 멋진 새로운 기능이 추가되었습니다. 저는 이미 한동안 기다렸습니다.나는 이 방면에 관한 글을 조금 쓸 것이라고 생각한다. 그리고 내가 VS 코드에서 임무를 어떻게 사용하는지, 특히 파이썬스타로서.
임무 기초 지식
시작점으로 임무가 무엇인지 기본 개념을 제시하기 위해 VS 코드에서 촉발할 수 있는 터미널 명령의 작은 단축 방식이다.일반적으로 구축 작업을 트리거하거나 로컬 개발 서버를 시작하는 데 사용됩니다. 일반적인 VS 코드 명령처럼 명령 트레이에서 트리거할 수 있다는 장점이 있습니다.예를 들어 내가 이 블로그에서 일할 때, 나는 로컬 개발 서버를 시작해서 내용을 제출하거나 전송하기 전에 내용을 테스트할 것이다.이렇게 보입니다.
이 점에서 나는 http://localhost:8000 으로 돌아가서 내가 줄곧 연구하고 있는 내용을 볼 수 있다.편리했어작업을 만들려면 명령pallette를 열고 "Tasks:Configure task"를 선택하십시오. 시스템은 기본적인 템플릿 작업을 제시하거나 "create Tasks.json file from template"를 선택하십시오. 이것은 당신에게 완전한 제어권을 주고 제가 사용하는 옵션입니다.
tasks.json
파일에는 정의된 작업이 많은 JSON blob이 포함되어 있습니다.그것들은 보기에 다음과 같다.{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Run Server",
"type": "shell",
"command": "source $(dirname ${config:python.pythonPath})/activate && make devserver"
},
]
}
이것은 내가 영상에서 보여준 로컬 개발 서버를 실행하는 정의이다.임의의 작업이 있을 수 있습니다. tasks
속성은 정의된 목록일 뿐입니다.속성과 옵션의 전체 목록은in Microsoft's excellent docs .
일반 파이썬 작업
이제 우리는 임무가 무엇인지 알게 되었다. 특히 파이썬 개발자들의 입장에서 볼 때 그것들로 무엇을 할 수 있을까?이것은 제가 설치한 흔한 프레임워크입니다. 그 중 대부분은 Django와 관련이 있습니다. 왜냐하면 저는 매일 대부분의 작업을 이 프레임워크에서 진행하기 때문입니다.
개발 서버 실행
{
"label": "Run Server",
"type": "shell",
"command": "${config:python.pythonPath} manage.py runserver --noreload",
},
이것은 기본적으로 내가 이전에 보여준 임무와 유사하다. 단지 Django의 runserver
명령만 사용한다.이 점에 대해 주의해야 할 것은 주의 라벨이 나의 블로그 항목의 라벨과 같다는 것이다.tasks.json
파일은 모든 항목에 저장되지만, 교묘한 것은 주어진 작업에 핫키를 할당할 수 있다는 것이다.내 keybindings.json
I 중에서보유:
{
"key": "cmd+shift+r",
"command": "workbench.action.tasks.runTask",
"args": "Run Server"
},
이것은 핫키를 누르기만 하면 로컬 개발 서버를 시작할 수 있도록 합니다. 프로젝트마다'로컬 개발 환경 시작'작업을 같은 이름으로 명명하면 로컬 개발 환경을 시작하는 버튼이 같습니다.건강검진 URL 클릭
{
"label": "Healthcheck (requires running server)",
"type": "shell",
"command": "curl http://127.0.0.1:6100/health"
},
일단 내가 로컬 서버를 실행하면, 그것은 매우 편리하고, 빠르게 클릭할 수 있다health checkurl(API에 건강검진을 추가했습니까?).마찬가지로, 이것은 매우 작지만, 매우 편리하다. 왜냐하면 내가 터미널 창으로 전환하고,
curl
명령을 입력하고, 이 항목이 다른 포트에서 실행되고, 이 포트를 찾는 등의 번거로움을 의식하기 때문이다.실행 단위 테스트
{
"label": "Run Unit Tests",
"type": "shell",
"group": {
"kind": "test",
"isDefault": true
},
"command": "${config:python.pythonPath} -m pytest -rxXs --ds=projectname.settings.local_test --random-order"
},
가능하면 pytest 단원 테스트를 실행할 것입니다.일반적으로 명령줄에서 실행됩니다 pytest <name of directory containing tests>
.그러나 문제는pytest가 가상 환경에 설치되어 있다는 것이다. 그러면 어떻게 임무기에 특정되지 않은 상황에서 가상 환경의 완전한 경로를 제공할 수 있을까?답은 제가 모듈로 실행하는 것입니다. 변수를 사용하여 현재Python 환경을 인용하기만 하면 됩니다.다른 옵션은 내가pytest에 제공한 흔한 옵션입니다. 예를 들어 config:python.pythonPath
스위치는 환경 변수를 지정하는 데 사용됩니다.--ds
사용Pytest Random Order plugin은 테스트가 실행될 때마다 무작위 순서로 테스트를 실행합니다. (내 코드/테스트에서 오류가 발견되었습니다.)또한 이 작업에 핫키를 설정했습니다.
{
"key": "shift+cmd+f11",
"command": "workbench.action.tasks.test"
},
이것은 임무가 정의한 DJANGO_SETTINGS_MODULE
속성을 이용했다.의존 항목 업데이트
{
"label": "Update Python Dependencies",
"type": "shell",
"command": "${config:python.pythonPath} -m pip install -r requirements.txt --upgrade && ${config:python.pythonPath} -m pip install -r requirements-dev.txt --upgrade"
},
나는 여전히 --random-order
서류를 사용한다.이 임무가 있으면 프로젝트의 모든 의존 항목을 신속하게 업데이트할 수 있습니다.프로젝트의 의존항과 프로젝트의 개발 의존항 (예:pytest나pylint) 을 단독 파일로 분리합니다.이렇게 하는 이유는 내가 개발 의존항을'부동'시킬 수 있고 내가 하는 대부분의 프로젝트도 하루가 끝날 때 Docker 이미지를 구축할 수 있기 때문이다. 따라서 의존항을 분리하면 프로젝트를 실행하는 데 필요한 의존항을 Docker 이미지에 설치할 수 있기 때문에 이미지의 크기를 줄일 수 있다.pipenv 회사 아직 많이 남았어요.
이것은 표면적인 현상일 뿐이다. 프로젝트의 터미널 창에서 명령을 자주 실행하는 것을 발견할 때마다 나는 몇 분 정도의 시간을 써서 그것을 VS 코드 작업으로 전환시킨다.
마지막으로 이곳의 관건은 내가 종사하는 모든 항목에서 기본적으로 같은 임무를 수행하는 것이다. 나는 단지 특정 항목의 특정 명령을 조정했을 뿐이다.Django 프로젝트, Flask, 완전히 다른 기술이든 RESTAPI가 있는 Java 프로젝트가 있기 때문에 같은 작업을 많이 만들었습니다.
노익장
앞서 설명한 바와 같이 2019년 1월 업데이트에서 그들은 내가 매우 좋아하는 임무와 관련된 새로운 기능을 추가했다.
이렇게 하면 한 작업을 버스트 터미널 창에서 다른 (실행 중인) 작업으로 파생할 수 있습니다.dev 서버를 실행하는 작업과 이 서버를 추적하는 로그 파일을 추적하는 작업이 있을 때, 통합 터미널에 나란히 나타날 수 있기 때문에 매우 편리합니다.
이것은 제가 일하는 프로젝트에 특히 유용합니다. 저는 Django 기반의 서버가 있습니다. 이 서버는 플러그인 연결을 통해 다른 로컬 개발 서버와 통신합니다.이전에 나는 이 두 가지 모두 작업을 설정했다. 나는 모든 작업을 단독으로 시작하고 여러 터미널 창 사이를 전환해서 모든 창의 출력을 보아야 한다.이제 나는 그들을 한 보기에 나란히 나타나게 할 수 있다.작업 방식은 공유 작업의
kind
속성 중 동일 requirements.txt
속성입니다.{
"label": "Run Server",
"type": "shell",
"command": "${config:python.pythonPath} manage.py runserver --noreload",
"presentation": {
"group": "groupServerStuff"
}
},
같은 그룹이 있는 모든 작업은 같은 터미널 창의 다른 버스트 터미널 창으로 열립니다.괜찮은데.이것은 나로 하여금 단독으로 모든 임무를 시작하는 것이 아니라 임무를 호출하거나 파생시킬 방법이 있는지 생각하게 한다.사실 증명:
{
"label": "Run Server",
"dependsOn": [
"Run TCP Server",
"Run Django Server",
"Tail Log File"
]
},
{
"label": "Run Django Server",
"type": "shell",
"command": "${config:python.pythonPath} manage.py runserver --noreload",
"presentation": {
"group": "groupServerStuff"
}
},
{
"label": "Run TCP Server",
"type": "shell",
"command": "${config:python.pythonPath} scripts/tcp_server.py",
"presentation": {
"group": "groupServerStuff"
}
},
{
"label": "Tail Log File",
"type": "shell",
"command": "tail -f /tmp/logfile.txt",
"presentation": {
"group": "groupServerStuff"
}
},
이것 보세요group
작업. 제가 정의한 또 다른 세 가지 작업이 생겼습니다. "Run Django Server"(이것은 이전의 "Run Server"작업), "Run TCP Server"(아날로그 플러그인 서버), "Tail Log File"입니다. 이것은 단지 Django가 로그인한 로그 파일의 끝부분일 뿐입니다.물론,
presentation
라고 불리기 때문에, 내가 이전에 정의한 같은 핫키는 새로운 터미널 창을 생성하고, 이 작업이 실행되는 상황에서 세 번 분할할 것이다.버튼 한 번만 누르면 돼요.이것은 매우 강한 물건이다!어쨌든, 나는 이것이 VS 코드의 임무에 대한 유용한 개술이기를 바란다.당신은 그것들을 위해 창조적인 용도를 생각해 냈습니까?댓글로 알려달라고!
Reference
이 문제에 관하여(Visual Studio 코드 작업 및 버스트 터미널), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/pzelnip/visual-studio-code-tasks-and-split-terminals-2ghk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)