Uso de la extensión Cookiecutter

Cookiecutter proporciona una interfaz gráfica de usuario para descubrir plantillas, opciones de plantilla de entrada y crear proyectos y archivos. Visual Studio 2017 y versiones posteriores incluyen la extensión Cookiecutter. Se puede instalar por separado en versiones anteriores de Visual Studio.

En Visual Studio, la extensión Cookiecutter está disponible en Ver>Cookiecutter Explorer:

Captura de pantalla que muestra la ventana principal del Explorador de Cookiecutter en Visual Studio.

Requisitos previos

  • Visual Studio. Para instalar el producto, siga los pasos descritos en Instalación de Visual Studio.

  • Python 3.3 o posterior (32 o 64 bits) o Anaconda 3 4.2 o posterior (32 o 64 bits).

    • Si no se dispone de un intérprete de Python adecuado, Visual Studio mostrará una advertencia.

    • Si instala un intérprete de Python mientras se está ejecutando Visual Studio, seleccione la opción Inicio en la barra de herramientas de Cookiecutter Explorer para detectar el intérprete recién instalado. Para obtener más información, consulte Creación y administración de entornos de Python en Visual Studio.

Trabajar con Cookiecutter Explorer

En Cookiecutter Explorer, puede examinar y seleccionar plantillas, clonar plantillas en el equipo local, establecer opciones de plantilla y crear código a partir de plantillas.

Examinar plantillas

Puede examinar plantillas en Cookiecutter Explorer para ver lo que ya está instalado y lo que está disponible.

  1. En Cookiecutter Explorer, seleccione la opción Inicio en la barra de herramientas para ver las plantillas disponibles.

    Captura de pantalla que muestra la página principal del Explorador de Cookiecutter en Visual Studio con plantillas enumeradas para las categorías Recomendadas y GitHub.

    La página de inicio muestra una lista de plantillas para elegir, organizada en cuatro posibles grupos:

    Agrupar Descripción Notas
    Instalado Plantillas instaladas en el equipo local. Cuando se usa una plantilla en línea, su repositorio se clona automáticamente en una subcarpeta de ~/.cookiecutters. Para quitar una plantilla instalada del sistema, seleccione Eliminar en la barra de herramientas de Cookiecutter Explorer.
    Recomendado Plantillas cargadas desde la fuente recomendada. Microsoft mantiene la fuente predeterminada. Para personalizar la fuente, siga los pasos descritos en Establecer opciones de Cookiecutter.
    GitHub Resultados de búsqueda de GitHub de la palabra clave "cookiecutter". La lista de repositorios de Git se devuelve en formato paginado. Cuando la lista de resultados supera la vista actual, puede seleccionar la opción Cargar más para mostrar el siguiente conjunto de resultados paginados en la lista.
    Personalizada Cualquier plantilla personalizada definida a través de Cookiecutter Explorer. Cuando se introduce una ubicación de plantilla personalizada en el cuadro de búsqueda de Cookiecutter Explorer, la ubicación aparece en este grupo. Para definir una plantilla personalizada, escriba la ruta completa al repositorio de Git o la ruta completa a una carpeta del disco local.
  2. Para mostrar u ocultar la lista de plantillas disponibles para una categoría específica, seleccione la flecha situada junto a la categoría.

Clonar plantillas

Puede trabajar con plantillas disponibles en Cookiecutter Explorer para realizar copias locales desde las que trabajar.

  1. En Cookiecutter Explorer, seleccione una plantilla. La información sobre la plantilla seleccionada se muestra en la parte inferior de la página principal de Cookiecutter Explorer.

    Captura de pantalla que muestra cómo seleccionar una plantilla para clonar en el Explorador de Cookiecutter en Visual Studio.

    El resumen de la plantilla incluye vínculos para obtener más información sobre la plantilla. Puede ir a la página del repositorio de GitHub de la plantilla, ver la plantilla Wiki o buscar Problemas notificados.

  2. Para clonar la plantilla seleccionada, seleccione Siguiente. Cookiecutter realiza una copia local de la plantilla.

El comportamiento de clonación depende del tipo de plantilla que seleccione:

Tipo de plantilla Comportamiento
Instalado Si la plantilla seleccionada se instaló en una sesión anterior de Visual Studio, se elimina automáticamente y se instala y clona la versión más reciente en el equipo local.
Recomendado La plantilla seleccionada se clona e instala en el equipo local.
GitHub La plantilla seleccionada se clona e instala en el equipo local.
Búsqueda personalizada - Dirección URL: si escribe una dirección URL personalizada para un repositorio de Git en el cuadro de búsqueda de Cookiecutter Explorer y, a continuación, selecciona la plantilla, la plantilla seleccionada se clona e instala en el equipo local.
- Ruta de acceso de carpeta: si escribe una ruta de acceso de carpeta personalizada en el cuadro de búsqueda y selecciona la plantilla, Visual Studio carga esa plantilla sin clonar.

Importante

Las plantillas de Cookiecutter se clonan en una sola carpeta ~/.cookiecutters. Cada subcarpeta se nombra después del nombre del repositorio Git, que no incluye el nombre de usuario de GitHub. Pueden surgir conflictos si clona distintas plantillas con el mismo nombre que proceden de diferentes autores. En este caso, Cookiecutter le impide sobrescribir la plantilla existente con una plantilla diferente del mismo nombre. Para instalar la otra plantilla, primero debe eliminar la existente.

Establecimiento de opciones de plantilla

Después de instalar y clonar una plantilla localmente, Cookiecutter muestra la página Opciones. En esta página, puede especificar la configuración, como la ubicación de la ruta de acceso de carpeta para los archivos generados:

Captura de pantalla que muestra las opciones de una plantilla recién instalada y clonada en el Explorador de Cookiecutter en Visual Studio.

Cada plantilla de Cookiecutter define su propio conjunto de opciones. Cuando hay un valor predeterminado disponible para una configuración, la página Opciones muestra el texto sugerido en el campo correspondiente. Un valor predeterminado puede ser un fragmento de código, normalmente cuando es un valor dinámico que usa otras opciones.

En este ejemplo, el nombre de la plantilla se define como cookiecutter-flask/cookiecutter-flask. Cuando se puede cambiar un valor de configuración, el texto del campo está disponible para su edición.

  1. En el campo Crear en , escriba la ubicación de la ruta de acceso de la carpeta para los archivos generados por Cookiecutter.

  2. A continuación, establezca otras opciones que desee para la plantilla, como:

    • full_name: nombre completo que se va a aplicar a la plantilla.
    • email: dirección de correo electrónico del autor de la plantilla.
    • github_username: alias de GitHub del autor de la plantilla.
    • python_version: versión de Python de destino para las aplicaciones web creadas a partir de la plantilla.

Establecer los valores predeterminados con un archivo de configuración

Puede personalizar los valores predeterminados para opciones específicas con un archivo de configuración de usuario. Cuando la extensión Cookiecutter detecta un archivo de configuración de usuario, sobrescribe los valores predeterminados de la plantilla con los valores del archivo de configuración. Para obtener más información sobre este comportamiento, consulte la sección Configuración de usuario en la documentación de Cookiecutter.

No participar en las tareas especificadas

Algunas plantillas identifican tareas específicas de Visual Studio que deben ejecutarse tras la generación del código. Las tareas comunes incluyen abrir un explorador web, abrir archivos en el editor e instalar dependencias. Cuando una plantilla identifica tareas específicas, la opción Ejecutar tareas adicionales al terminar se agrega a la lista de opciones. Puede configurar esta opción para no participar en las tareas de Visual Studio especificadas.

Crear código a partir de plantillas

Después de establecer las opciones de plantilla, estará listo para que Cookiecutter cree los archivos del proyecto y genere el código.

El cuadro de diálogo muestra un botón después de la lista de opciones. El texto del botón depende de la plantilla. Es posible que vea Crear y abrir carpeta, Agregar a la solución, etc.

  1. En la página Opciones, seleccione el botón que sigue a la lista de opciones, como Crear y Abrir carpeta o Agregar a la solución.

    Captura de pantalla que muestra el botón Crear y abrir carpeta después de la lista de opciones de plantilla.

    Cookiecutter genera el código. Si la carpeta de salida no está vacía, se muestra una advertencia.

    • Si está familiarizado con la salida de la plantilla y no le importa sobrescribir los archivos, seleccione Aceptar para pasar por alto la advertencia.

    • En caso contrario, seleccione Cancelar, especifique una carpeta vacía y luego copie manualmente los archivos creados en la carpeta de salida que no está vacía.

  2. Una vez que Cookiecutter crea correctamente los archivos, Visual Studio abre los archivos de proyecto de plantilla en el Explorador de soluciones.

Establecer opciones de Cookiecutter

Las opciones de Cookiecutter están disponibles en Tools>Options>Cookiecutter (Herramientas > Opciones > Cookiecutter):

Captura de pantalla que muestra las opciones de Cookiecutter en Visual Studio.

Opción Descripción
Buscar plantillas actualizadas Controla si Cookiecutter comprueba automáticamente si hay actualizaciones en línea de las plantillas instaladas.
Recommended Feed URL (URL de fuente recomendada) La ubicación del archivo de la fuente de plantillas recomendadas. La ubicación puede ser una dirección URL o una ruta de acceso a un archivo local. Deje en blanco la dirección URL para usar la fuente protegida por Microsoft predeterminada. La fuente proporciona una sencilla lista de ubicaciones de plantillas, separadas por nuevas líneas. Para solicitar cambios en la fuente protegida, realice una solicitud de extracción contra el origen de GitHub.
Show Help (Mostrar ayuda) Controla la visibilidad de la barra de información de ayuda en la parte superior de la ventana de Cookiecutter.

Optimización de plantillas de Cookiecutter para Visual Studio

La extensión Cookiecutter para Visual Studio admite plantillas creadas por Cookiecutter v1.4. Para obtener más información sobre la creación de plantillas de Cookiecutter, consulte la Documentación de Cookiecutter.

La representación predeterminada de variables de plantilla depende del tipo de datos (cadena o lista):

  • Cadena: el tipo de datos Cadena utiliza una etiqueta para el nombre de la variable, un cuadro de texto para introducir el valor y una marca de agua que muestra el valor predeterminado. Una información sobre herramientas en el cuadro de texto muestra el valor predeterminado.
  • Lista: el tipo de datos Lista usa una etiqueta para el nombre de la variable y un cuadro combinado para seleccionar un valor. Una información sobre herramientas en el cuadro combinado muestra el valor predeterminado.

Es posible mejorar la representación mediante la especificación de metadatos adicionales en el archivo cookiecutter.json que es específico de Visual Studio (y la CLI de Cookiecutter lo omite). Todas las propiedades son opcionales:

Property Descripción
label Especifica el texto que aparece encima del editor para la variable, en lugar del nombre de la variable.
description Especifica la información sobre herramientas que se muestra en el control de edición, en lugar del valor predeterminado de esa variable.
url Transforma la etiqueta en un hipervínculo, con una información sobre herramientas que muestra la URL. Al seleccionar el hipervínculo se abrirá el explorador predeterminado del usuario con esa dirección URL.
selector Permite la personalización del editor de una variable. Actualmente se admiten los siguientes selectores:
- string: cuadro de texto estándar, de forma predeterminada para las cadenas.
- list: cuadro combinado estándar, de forma predeterminada para las listas.
- yesno: cuadro combinado elegir entre y y n, para las cadenas.
- odbcConnection: cuadro de texto con un botón de puntos suspensivos (...) que abre un cuadro de diálogo de conexión de base de datos.

En el ejemplo siguiente se muestra cómo establecer las propiedades de representación:

{
    "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"
        }
    }
}

Ejecución de tareas de Visual Studio

Cookiecutter presenta una característica llamada Post-Generate Hooks (Enlaces posteriores a la generación) que le permiten ejecutar código de Python arbitrario después de que se generan los archivos. Aunque la característica es flexible, no permite un acceso fácil a Visual Studio.

Puede usar esta característica para abrir un archivo en el editor de Visual Studio o en su explorador web. También puede desencadenar la interfaz de usuario de Visual Studio que solicita al usuario que cree un entorno virtual e instale los requisitos del paquete.

Para permitir estos escenarios, Visual Studio busca metadatos extendidos en el archivo cookiecutter.json. Busca que los comandos se ejecuten después de que el usuario abra los archivos generados en el Explorador de soluciones o después de agregar los archivos a un proyecto existente. (Nuevamente, el usuario puede optar por ejecutar las tareas si desactiva la opción de plantilla Ejecutar tareas adicionales al terminar).

En el ejemplo siguiente se muestra cómo establecer metadatos extendidos en el archivo 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"
    }
]

Especifique los comandos por nombre y use el nombre no traducido (en inglés) para que funcione en las instalaciones traducidas de Visual Studio. Puede probar y detectar nombres de comando en la ventana de comandos de Visual Studio.

Si desea pasar un solo argumento, especifique el argumento como una cadena, como se muestra para los metadatos name en el ejemplo anterior.

Si no necesita pasar un argumento, deje el valor como una cadena vacía u omítalo del archivo JSON:

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

Use una matriz para varios argumentos. Para los modificadores, divida el modificador y su valor en argumentos distintos y use el entrecomillado correcto, tal y como se muestra en este ejemplo:

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

Los argumentos pueden hacer referencia a otros variables de Cookiecutter. En el ejemplo anterior, la variable interna _output_folder_path se usa para formar una ruta de acceso absoluta para generar archivos.

El comando Python.InstallProjectRequirements solo funciona al agregar archivos a un proyecto existente. Esta limitación existe porque el comando se procesa mediante el proyecto de Python en el Explorador de soluciones, y no hay ningún proyecto para recibir el mensaje mientras se está en Explorador de soluciones - vista de carpetas.

Solución de problemas de plantilla

Revise las secciones siguientes para obtener sugerencias sobre cómo solucionar problemas del entorno y el código de Python al trabajar con Cookiecutter.

Error al cargar la plantilla

Puede que algunas plantillas usen tipos de datos no válidos, como booleanos, en el archivo cookiecutter.json. Para informar sobre estas instancias al autor de la plantilla, haga clic en el vínculo Problemas del panel de información de la plantilla.

Error de script de enlace

Algunas plantillas pueden usar scripts posteriores a la generación que no son compatibles con la interfaz de usuario de Cookiecutter. Por ejemplo, se producirá un error en los scripts que consultan la entrada del usuario por no tener una consola de terminal.

Script de enlace no admitido en Windows

Si el archivo de script posterior es .sh, puede que no esté asociado a una aplicación del equipo Windows. Es posible que vea un diálogo de Windows que le pide que busque una aplicación compatible en la Tienda Windows.

Plantillas con problemas conocidos

Puede averiguar si una plantilla tiene problemas conocidos mediante el vínculo Problemas del resumen de la plantilla en el Explorador de Cookiecutter:

Captura de pantalla que muestra cómo abrir la lista de problemas conocidos de una plantilla en el Explorador de Cookiecutter.

El vínculo abre la página de problemas de GitHub para la plantilla:

Captura de pantalla que muestra la lista de problemas notificados para una plantilla en GitHub.