Cookiecutter 확장 사용

Cookiecutter는 템플릿을 검색하고, 템플릿 옵션을 입력하며, 프로젝트와 파일을 만들 수 있는 그래픽 사용자 인터페이스를 제공합니다. Visual Studio 2017 이상에는 Cookiecutter 확장이 포함됩니다. 이전 버전의 Visual Studio에서 별도로 설치할 수 있습니다.

Visual Studio에서 Cookiecutter 확장은 보기>Cookiecutter 탐색기기에서 사용할 수 있습니다.

Visual Studio에서 Cookiecutter 탐색기 기본 창을 보여주는 스크린샷.

필수 조건

  • Visual Studio. 제품을 설치하려면 Visual Studio 설치의 단계를 따릅니다.

  • Python 3.3 이상(32비트 또는 64비트) 또는 Anaconda 3 4.2 이상(32비트 또는 64비트).

    • 적합한 Python 인터프리터를 사용할 수 없는 경우 Visual Studio에서 경고가 표시됩니다.

    • Visual Studio가 실행되는 동안 Python 인터프리터를 설치하는 경우 Cookiecutter Explorer 도구 모음에서 옵션을 선택하여 새로 설치된 인터프리터를 검색합니다. 자세한 내용은 Visual Studio에서 Python 환경 만들기 및 관리를 참조하세요.

Cookiecutter 탐색기 사용

Cookiecutter 탐색기에서 템플릿을 찾아 선택하고, 템플릿을 로컬 컴퓨터에 복제하며, 템플릿 옵션을 설정하고, 템플릿에서 코드를 만들 수 있습니다.

템플릿 찾아보기

Cookiecutter 탐색기에서 템플릿을 찾아 이미 설치된 항목과 사용 가능한 항목을 확인할 수 있습니다.

  1. Cookiecutter 탐색기의 툴바에서 옵션을 선택하여 사용 가능한 템플릿을 봅니다.

    권장 및 GitHub 범주에 대해 나열된 템플릿을 포함하는 Visual Studio의 Cookiecutter Explorer 홈페이지를 보여주는 스크린샷.

    홈페이지에는 선택할 템플릿 목록(네 개의 가능한 그룹으로 구성됨)이 표시됩니다.

    그룹 설명 참고
    설치됨 로컬 컴퓨터에 설치된 템플릿입니다. 온라인 템플릿을 사용하면 리포지토리가 ~/.cookiecutters의 하위 폴더에 자동으로 복제됩니다. Cookiecutter 탐색기 도구 모음에서 삭제를 선택하여 시스템에서 설치된 템플릿을 제거할 수 있습니다.
    권장 권장 피드에서 로드된 템플릿입니다. Microsoft는 기본 피드를 큐레이팅합니다. Cookiecutter 설정 옵션의 단계에 따라 피드를 사용자 지정할 수 있습니다.
    GitHub "cookiecutter" 키워드에 대한 GitHub 검색 결과입니다. git 리포지토리 목록은 페이지를 매긴 양식으로 반환됩니다. 결과 목록이 현재 보기를 초과하면 추가 로드 옵션을 선택하여 목록에 페이지를 매긴 다음 결과 집합을 표시할 수 있습니다.
    사용자 지정 Cookiecutter 탐색기를 통해 정의된 모든 사용자 지정 템플릿입니다. Cookiecutter 탐색기 검색창에 사용자 지정 템플릿 위치를 입력하면 이 그룹에 해당 위치가 표시됩니다. git 리포지토리에 대한 전체 경로 또는 로컬 디스크의 폴더에 대한 전체 경로를 입력하여 사용자 지정 템플릿을 정의할 수 있습니다.
  2. 특정 범주에 사용 가능한 템플릿 목록을 표시하거나 숨기려면 범주 옆에 있는 화살표 를 선택합니다.

템플릿 복제

로컬 복사본을 만들 수 있도록 Cookiecutter 탐색기에서 사용 가능한 템플릿을 사용할 수 있습니다.

  1. Cookiecutter 탐색기에서 템플릿을 선택합니다. 선택한 템플릿에 대한 정보는 Cookiecutter 탐색기 홈페이지의 맨 아래에 표시됩니다.

    Visual Studio의 Cookiecutter 탐색기에서 복제할 템플릿을 선택하는 방법을 보여주는 스크린샷.

    템플릿 요약에는 템플릿에 대한 자세한 내용을 제공하는 링크가 포함되어 있습니다. 템플릿에 대한 GitHub 리포지토리 페이지로 이동하거나, 템플릿 Wiki를 보거나, 보고된 문제를 찾을 수 있습니다.

  2. 선택한 템플릿을 복제하려면 다음을 선택합니다. Cookiecutter는 템플릿의 로컬 복사본을 만듭니다.

복제 동작은 선택한 템플릿 유형에 따라 달라집니다.

템플릿 유형 동작
설치됨 선택한 템플릿이 Visual Studio의 이전 세션에 설치되는 경우 해당 템플릿은 자동으로 삭제되고 최신 버전이 로컬 컴퓨터에 설치 및 복제됩니다.
권장 선택한 템플릿이 로컬 컴퓨터에 복제 및 설치됩니다.
GitHub 선택한 템플릿이 로컬 컴퓨터에 복제 및 설치됩니다.
사용자 지정 검색 - URL: git 리포지 토리에 대한 사용자 지정 URL을 Cookiecutter 탐색기 검색창에 입력하고 템플릿을 선택하면 선택한 템플릿이 로컬 컴퓨터에 복제 및 설치됩니다.
- 폴더 경로: 사용자 지정 폴더 경로를 검색창에 입력하고 템플릿을 선택하면 Visual Studio에서 해당 템플릿을 복제하지 않고 로드합니다.

Important

Cookiecutter 템플릿은 ~/.cookiecutters 단일 폴더 아래에 복제됩니다. 각 하위 폴더의 이름은 GitHub 사용자 이름을 포함하지 않은 Git 리포지토리 이름 뒤에 지정됩니다. 여러 작성자의 이름이 동일한 템플릿을 여러 개 복제하면 충돌이 발생할 수 있습니다. 이 경우 Cookiecutter는 기존 템플릿을 동일한 이름의 다른 템플릿으로 덮어쓰지 못하게 합니다. 다른 템플릿을 설치하려면 먼저 기존 템플릿을 삭제해야 합니다.

템플릿 옵션 설정

템플릿을 로컬로 설치하고 복제한 후 Cookiecutter는 옵션 페이지를 표시합니다. 이 페이지에서 생성된 파일의 폴더 경로 위치와 같은 설정을 지정할 수 있습니다.

Visual Studio의 Cookiecutter 탐색기에 새로 설치 및 복제된 템플릿에 대한 옵션을 보여주는 스크린샷.

각 Cookiecutter 템플릿은 고유한 옵션 집합을 정의합니다. 설정에 기본값을 사용할 수 있는 경우 옵션 페이지의 해당 필드에 제안된 텍스트가 표시됩니다. 기본값이 다른 옵션을 사용하는 동적 값인 경우 종종 코드 조각일 수 있습니다.

이 예제에서 템플릿 이름은 cookiecutter-flask/cookiecutter-flask로 정의됩니다. 설정 값을 변경할 수 있는 경우 필드 텍스트를 편집할 수 있습니다.

  1. 생성 위치 필드에 Cookiecutter에서 생성된 모든 파일의 폴더 경로 위치를 입력합니다.

  2. 다음으로 템플릿에 대해 다음과 같은 다른 원하는 옵션을 설정합니다.

    • full_name: 템플릿에 적용할 전체 이름입니다.
    • email: 템플릿 작성자의 이메일 주소입니다.
    • github_username: 템플릿 작성자의 GitHub 별칭입니다.
    • python_version: 템플릿에서 만든 웹앱의 대상 Python 버전입니다.

구성 파일을 사용하여 기본값 설정

사용자 구성 파일을 사용하여 특정 옵션에 대한 기본값을 사용자 지정할 수 있습니다. Cookiecutter 확장에서 사용자 구성 파일을 감지하면 템플릿의 기본값을 사용자 구성 파일 값으로 덮어씁니다. 이 동작에 대한 자세한 내용은 Cookiecutter 설명서의 User Config 섹션을 참조하세요.

지정된 작업 옵트아웃

일부 템플릿은 코드 생성 후 실행할 특정 Visual Studio 작업을 식별합니다. 일반적인 작업으로, 웹 브라우저 열기, 편집기에서 파일 열기, 종속성 설치 등이 있습니다. 템플릿이 특정 작업을 식별하면 완료 시 추가 작업 실행 설정이 옵션 목록에 추가됩니다. 지정된 Visual Studio 작업을 옵트아웃하도록 이 설정을 구성할 수 있습니다.

템플릿에서 코드 만들기

템플릿 옵션을 설정한 후에는 Cookiecutter에서 프로젝트 파일을 만들고 코드를 생성할 준비가 된 것입니다.

대화 상자에서 옵션 목록 뒤에 버튼이 표시됩니다. 버튼의 텍스트는 템플릿에 따라 달라집니다. 폴더 만들기 및 열기, 솔루션에 추가 등이 표시될 수 있습니다.

  1. 옵션 페이지에서 폴더 만들기 및 열기 또는 솔루션에 추가와 같은 옵션 목록 뒤에 있는 버튼을 선택합니다.

    템플릿 옵션 목록 뒤의 폴더 만들기 및 열기 버튼을 보여주는 스크린샷.

    Cookiecutter에서 코드를 생성합니다. 출력 폴더가 비어 있지 않으면 경고가 표시됩니다.

    • 템플릿의 출력에 익숙하고 파일 덮어쓰기에 신경 쓰지 않는다면 확인을 선택하여 경고를 해제합니다.

    • 그렇지 않으면 취소를 선택하고, 빈 출력 폴더를 지정한 다음, 이 출력 폴더에 만든 파일을 수동으로 복사합니다.

  2. Cookiecutter에서 파일을 만든 후에 Visual Studio는 솔루션 탐색기에서 템플릿 프로젝트 파일을 엽니다.

Cookiecutter 옵션 설정

Cookiecutter 옵션은 도구>옵션>Cookiecutter를 통해 사용할 수 있습니다.

Visual Studio에서 Cookiecutter에 대한 옵션을 보여주는 스크린샷.

옵션 설명
업데이트된 템플릿 확인 Cookiecutter가 설치된 템플릿에 대한 업데이트를 온라인에서 자동으로 확인하는지 여부를 제어합니다.
권장 피드 URL 권장 템플릿 피드 파일의 위치입니다. 위치는 URL 또는 로컬 파일에 대한 경로일 수 있습니다. Microsoft에서 큐레이트하는 기본 피드를 사용하려면 URL을 비워 둡니다. 피드는 줄 바꿈 문자로 구분된 템플릿 위치의 간단한 목록을 제공합니다. 큐레이트된 피드에 대한 변경을 요청하려면 GitHub 원본에 대한 끌어오기를 요청합니다.
도움말 표시 Cookiecutter 창 위쪽에 있는 도움말 정보 표시줄의 가시성을 제어합니다.

Visual Studio용 Cookiecutter 템플릿 최적화

Visual Studio용 Cookiecutter 확장은 Cookiecutter v1.4용으로 만들어진 템플릿을 지원합니다. Cookiecutter 템플릿 작성에 대한 자세한 내용은 Cookiecutter 설명서를 참조하세요.

템플릿 변수의 기본 렌더링은 다음과 같이 데이터 형식(문자열 또는 목록)에 따라 달라집니다.

  • 문자열: 문자열 데이터 형식은 변수 이름에 레이블을 사용하고 값 입력에 입력란을 사용하며 기본값을 보여주는 워터마크를 사용합니다. 입력란의 도구 설명에 기본값이 표시됩니다.
  • 목록: 목록 데이터 형식은 변수 이름에 레이블을 사용하고 값을 선택하는 데 콤보 상자를 사용합니다. 콤보 상자의 도구 설명에는 기본값이 표시됩니다.

Visual Studio와 관련된 cookiecutter.json 파일에 다른 메타데이터를 지정하여 렌더링에서 개선할 수 있습니다(Cookiecutter CLI에서는 무시됨). 모든 속성은 선택적입니다.

속성 설명
label 변수 이름 대신, 변수의 편집기 위에 표시할 텍스트를 지정합니다.
description 해당 변수의 기본값 대신, 편집 컨트롤에 표시할 도구 설명을 지정합니다.
url 도구 설명에서 URL을 표시하는 하이퍼링크로 레이블을 변경합니다. 하이퍼링크를 선택하면 사용자의 기본 브라우저로 해당 URL을 엽니다.
selector 변수에 대한 편집기의 사용자 지정을 허용합니다. 현재 지원되는 선택기는 다음과 같습니다.
- string: 문자열에 대한 기본 표준 텍스트 상자입니다.
- list: 목록에 대한 기본 표준 콤보 상자입니다.
- yesno: 문자열에 대해 yn 중에서 선택하는 콤보 상자입니다.
- odbcConnection: 데이터베이스 연결 대화 상자를 여는 줄임표(...) 버튼이 있는 텍스트 상자입니다.

다음 예제는 렌더링 속성을 설정하는 방법을 보여줍니다.

{
    "site_name": "web-app",
    "python_version": ["3.5.2"],
    "use_azure": "y",

    "_visual_studio": {
        "site_name": {
            "label": "Site name",
            "description": "E.g. <site-name>.azurewebsites.net (can only contain alphanumeric characters and `-`)"
        },
        "python_version": {
            "label": "Python version",
            "description": "The version of Python to run the site on"
        },
        "use_azure" : {
            "label": "Use Azure",
            "description": "Include Azure deployment files",
            "selector": "yesno",
            "url": "https://azure.microsoft.com"
        }
    }
}

Visual Studio 작업 실행

Cookiecutter에는 생성 후 후크라는 기능이 있으므로 파일을 생성한 후에 임의의 Python 코드를 실행할 수 있습니다. 이 기능은 유연하지만 Visual Studio에 쉽게 액세스할 수 없습니다.

이 기능을 사용하여 Visual Studio 편집기 또는 웹 브라우저에서 파일을 열 수 있습니다. 또한 가상 환경을 만들고 패키지 요구 사항을 설치하라는 메시지를 사용자에게 표시하는 Visual Studio UI를 트리거할 수도 있습니다.

이러한 시나리오를 허용하기 위해 Visual Studio는 cookiecutter.json 파일에서 확장된 메타데이터를 찾습니다. 사용자가 솔루션 탐색기에서 생성된 파일을 열거나 파일이 기존 프로젝트에 추가된 후 실행할 명령을 검색합니다. (사용자는 다시 한번 완료 시 추가 작업 실행 템플릿 옵션을 선택 취소하여 작업 실행을 옵트아웃할 수 있습니다.)

다음 예제에서는 cookiecutter.json 파일에서 확장된 메타데이터를 설정하는 방법을 보여줍니다.

"_visual_studio_post_cmds": [
    {
        "name": "File.OpenFile",
        "args": "{{cookiecutter._output_folder_path}}\\readme.txt"
    },
    {
        "name": "Cookiecutter.ExternalWebBrowser",
        "args": "https://learn.microsoft.com"
    },
    {
        "name": "Python.InstallProjectRequirements",
        "args": "{{cookiecutter._output_folder_path}}\\dev-requirements.txt"
    }
]

Visual Studio의 지역화된 설치에서 작동하려면 이름으로 명령을 지정하고 지역화되지 않은 이름(영문)을 사용합니다. Visual Studio 명령 창에서 명령 이름을 테스트하고 검색할 수 있습니다.

단일 인수를 전달하려면 이전 예제의 name 메타데이터에서와 같이 인수를 문자열로 지정합니다.

인수를 전달할 필요가 없으면 값을 빈 문자열로 두거나 JSON에서 생략합니다.

"_visual_studio_post_cmds": [
    {
        "name": "View.WebBrowser"
    }
]

인수가 여러 개인 경우 배열을 사용합니다. 스위치의 경우 이 예제에서와 같이 스위치와 해당 값을 별도의 인수로 분할하고 적절한 따옴표를 사용합니다.

"_visual_studio_post_cmds": [
    {
        "name": "File.OpenFile",
        "args": [
            "{{cookiecutter._output_folder_path}}\\read me.txt",
            "/e:",
            "Source Code (text) Editor"
        ]
    }
]

인수는 다른 Cookiecutter 변수를 참조할 수 있습니다. 이전 예제에서 내부 _output_folder_path 변수는 생성된 파일의 절대 경로를 구성하는 데 사용됩니다.

Python.InstallProjectRequirements 명령은 기존 프로젝트에 파일을 추가할 때만 작동합니다. 이 제한은 명령이 솔루션 탐색기에서 Python 프로젝트로 처리되고, 솔루션 탐색기 - 폴더 보기에서 메시지를 받을 프로젝트가 없기 때문에 발생합니다.

템플릿 문제 해결

Cookiecutter를 사용할 때 Python 환경 및 코드 문제 해결에 대한 팁은 다음 섹션을 검토하세요.

템플릿 로드 중 오류

일부 템플릿이 cookiecutter.json에서 부울 등의 잘못된 데이터 형식을 사용할 수 있습니다. 템플릿 정보 창에서 문제 링크를 선택하여 이러한 인스턴스를 템플릿 작성자에게 보고할 수 있습니다.

후크 스크립트 실패

일부 템플릿에서 Cookiecutter UI와 호환되지 않는 생성 후 스크립트를 사용할 수도 있습니다. 예를 들어 터미널 콘솔이 없어서 사용자에게 입력을 쿼리하는 스크립트에 실패합니다.

Windows에서 지원하지 않는 후크 스크립트

게시 스크립트가 .sh인 경우 Windows 컴퓨터에서 애플리케이션과 연결되지 않을 수 있습니다. Windows 스토어에서 호환되는 애플리케이션을 찾으려는 Windows 대화 상자가 나타날 수 있습니다.

알려진 문제점이 있는 템플릿

Cookiecutter 탐색기의 템플릿 요약에서 문제 링크를 사용하여 템플릿에 알려진 문제가 있는지 확인할 수 있습니다.

Cookiecutter 탐색기에서 템플릿에 대해 알려진 문제 목록을 여는 방법을 보여주는 스크린샷.

이 링크는 템플릿에 대한 GitHub 문제 페이지를 엽니다.

GitHub에서 템플릿에 대해 보고된 문제 목록을 보여주는 스크린샷.