다음을 통해 공유


Cookiecutter 확장 사용

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

Visual Studio에서 Cookiecutter 확장은 View>Cookiecutter Explorer사용할 수 있습니다.

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 도구 모음에서 Home 옵션을 선택하여 새로 설치된 인터프리터를 검색합니다. 자세한 내용은 Visual Studio Python 환경 만들기 및 관리참조하세요.

Cookiecutter 탐색기와 작업하기

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

템플릿 찾아보기

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

  1. Cookiecutter Explorer도구 모음에서 옵션을 선택하여 사용 가능한 템플릿을 봅니다.

    Visual Studio의 Cookiecutter Explorer 홈페이지를 보여주는 스크린샷으로, 권장 항목과 GitHub 항목에 나열된 템플릿이 있습니다.

    홈페이지에는 선택할 수 있는 템플릿 목록이 4개의 가능한 그룹으로 구성됩니다.

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

템플릿 복제

Cookiecutter Explorer에서 사용 가능한 템플릿을 활용하여 작업할 로컬 복사본을 만들 수 있습니다.

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

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

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

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

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

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

중요하다

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

템플릿 옵션 설정

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

visual Studio의 Cookiecutter Explorer에 새로 설치되고 복제된 템플릿에 대한 옵션을 보여 주는 스크린샷

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

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

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

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

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

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

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

지정된 작업 옵트아웃

일부 템플릿은 코드 생성 후 실행할 특정 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 CLI에서 무시되는 cookiecutter.json 파일에서 다른 메타데이터를 지정하여 렌더링을 개선할 수 있습니다. 모든 속성은 선택 사항입니다.

재산 묘사
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 Explorer템플릿 요약의 문제 링크를 사용하여 템플릿에 알려진 문제가 있는지 확인할 수 있습니다.

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

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

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