Instalando Theme Kit y primeros pasos
TL;DR: Haz click acá para seguir las instrucciones y leer toda la documentación. Si usas Mac OS y usas homebrew aquí están las instrucciones:
brew tap shopify/shopify
brew install themekit
Un poco de historia primero
Empezando el 2019 Shopify recomendaba usar Slate, y a pesar de no ser una herramienta perfecta, hacía el trabajo local muy cómodo, es el equivalente a un npm start
con create-react-app o gatsby develop
. El problema es que en marzo de 2019 Slate entró en modo de "poco mantenimiento" diciendo que se tomarían 6 meses para evaluarlo y finalmente en enero de 2020 declararon que no iban a soportar más Slate.
Así que la recomendación oficial de Shopify es usar Theme Kit, Slate realmente estaba construido encima de Theme Kit. El problema es que Theme Kit es muy diferente a Slate. Mientras Slate permite una experiencia de desarrollo sin prácticamente ninguna configuración, Theme Kit solo permite funciones básicas del tema, y a pesar de que tiene un comando de watch
este sólo revisa que algún archivo se haya actualizado y lo sube a los servidores de Shopify, pero no compila, no transpila ni nada parecido, todo eso queda de parte de uno para implementar usando Webpack, Gulp o Grunt.
La idea de esta serie de posts es documentar un poco el proceso de creación de ese ambiente de desarrollo.
Instalación
Lo primero que debes hacer es instalarlo, Theme Kit está disponible para todas las versiones de sistemas operativos. Acá dejo las instrucciones para MacOS
brew tap shopify/shopify
brew install themekit
De todas formas recomiendo revisar la documentación por si esto ha cambiado desde que se escribió este artículo, si usas otro sistema operativo encontrarás las instrucciones en el link anterior.
Config.yml
Theme kit usa un archivo llamado config.yml
para la configuración de la tienda y el tema con el cual se está trabajando. Este archivo tiene la siguiente estructura:
development:
password: 16ef663594568325d64408ebcdeef528
theme_id: "123"
store: can-i-buy-a-feeling.myshopify.com
proxy: http://localhost:3000
ignore_files:
- "*.gif"
- "*.jpg"
- config/settings_data.json
Nos fijamos el título development
. En el mismo archivo debemos tener todos nuestros ambientes de desarrollo y el nombre es una decisión personal o de equipo. Es decir, podríamos tener un archivo que se viera así:
development:
password: 16ef663594568325d64408ebcdeef528
theme_id: "123"
store: my-dev-store.myshopify.com
ignore_files:
- config/settings_data.json
production:
password: 16ef23423423425d64408ebcdeef125
theme_id: "456"
store: my-store.myshopify.com
ignore_files:
- config/settings_data.json
Como podrán ver, este archivo usa el formato YAML. YAML es bastante delicado, hay que respetar la indentación y el uso de los espacios, sino el archivo no funcionará.
Importante: Dado que este archivo tiene una clave de acceso a nuestro tema por API la decisión de versionarlo o no es algo que se tendrá que decidir como equipo
¿De dónde saco esa clave?
Shopify da la opción de crear aplicaciones de uso privado. Para crear una debes ir a la ventana de Aplicaciones y debajo del listado de aplicaciones vas a ver un texto que es muy fácil de perder.
¿Estás trabajando con un desarrollador en la creación de tu tienda? Gestionar aplicaciones privadas
Si es primera vez que se crean aplicaciones privadas en tu tienda, solo el dueño de la tienda tiene el permiso de crearlas. Esta pantalla se verá solo una vez por el tiempo de vida de la tienda.
Hay que aceptar los términos y condiciones para poder activar el desarrollo.
Se nos presentará una pantalla para darle nombre a la aplicación y agregar nuestro correo:
Acá es importante darle clic donde dice "Mostrar permisos de la API del panel de control inactivos".
Como el nombre lo dice, esto desplegará todos los posibles permisos que puede tener la API. Esta parte es delicada.
En mi opinión, lo mejor es que esta Aplicación solo tenga permiso para gestionar los Temas, ya que Theme Kit realmente no se necesita nada más, si en un momento se llega a necesitar más permisos para otra cosa, lo mejor es crear otra app con los permisos adecuados.
Hay que buscar en la lista de permisos, que es bastante larga, y seleccionar sólo la de Temas y el permiso debe ser Leer y escribir
Una vez que creemos la aplicación vamos a ver una sección nueva con la "Clave API (API KEY)" y la "Contraseña (Password)"
Esta última es la que debemos usar para nuestro config.yml
.
Primeros pasos
Si nunca has creado un tema de Shopify, lo mejor es usar el comando new
para crear un nuevo tema, la ventaja es que lo crea localmente y lo sube automáticamente a Shopify. Este comando crea todos los archivos necesarios para un tema de Shopify, con liquid bastante básico, un archivo config.yml
, nada de Javascript y nada de SCSS. Perfecto para desarrollar.
theme new --password=[CLAVE] --store=[tu-tienda.myshopify.com] --name="Nuevo Tema"
Si corremos este comando en una carpeta nueva y vacía veremos algo como esto
[tu-tienda.myshopify.com] theme created
[tu-tienda.myshopify.com] config created
Created assets.
Created assets/application.js.
Created assets/application.scss.liquid.
Created config.
Created config/settings_data.json.
Created config/settings_schema.json.
Created layout.
Created layout/theme.liquid.
Created locales.
Created locales/en.default.json.
Created templates.
Created templates/cart.liquid.
Created templates/gift_card.liquid.
Created templates/index.liquid.
Created templates/404.liquid.
Created templates/article.liquid.
Created templates/blog.liquid.
Created templates/page.contact.liquid.
Created templates/page.liquid.
Created templates/product.liquid.
Created templates/search.liquid.
Created templates/collection.liquid.
Created templates/collection.list.liquid.
Created templates/list-collections.liquid.
Created templates/customers.
Created templates/customers/addresses.liquid.
Created templates/customers/login.liquid.
Created templates/customers/order.liquid.
Created templates/customers/register.liquid.
Created templates/customers/reset_password.liquid.
Created templates/customers/account.liquid.
Created templates/customers/activate_account.liquid.
[tu-tienda.myshopify.com] uploading new files to shopify
[development] 26|26 [==============================================================================] 100 %
Y si vamos a nuestra tienda, en la sección de Tienda Online vamos a ver nuestro nuevo Tema al final, dándole click en "Acciones" y "Publicar" podremos verlo en vivo.
Uso de ambientes
Como vimos anteriormente, podremos utilizar nuestro config.yml
para tener varias tiendas o incluso varios temas dentro de la misma tienda. El ambiente por defecto para Theme kit es development
, si revisamos el archivo config.yml
que se generó con nuestro comando anterior vemos la versión más básica del mismo, y vemos que el nombre de este ambiente es "development"
development:
password: 1342132424
theme_id: "w34r354435"
store: tu-tienda.myshopify.com
En caso de querer cambiar ese nombre, o si tienes varios ambientes de desarrollo, debes usar la bandera --env
o -e
para pasar el ambiente. Por ejemplo
theme watch --env=prod
Temas en vivo
Desde hace algunas versiones atrás, si estás trabajando con un tema que esté en "vivo", ya sea en una tienda de desarrollo o en la tienda de producción, hay que pasar la bandera --allow-live
para que el código se suba sin problema.
Deploy y Watch
Los comandos que más se usarán, por mucho, son watch
y deploy
. Cada uno con esta estructura
theme watch --env=[Ambiente]
theme deploy --env=[Ambiente]
Watch
Este comando es bastante básico, una vez que lo activemos el feedback es el siguiente:
→ theme watch --allow-live
00:00:00 [development] Nombre de Tienda: Watching for file changes to theme 118508290222
00:00:01 [development] processing templates/index.liquid
00:00:05 [development] Updated templates/index.liquid
Acá vemos el proceso del watcher iniciado, cuando cuando se hace un cambio algún archivo del tema, el watcher detecta el cambio y lo subo a Shopify.
Como lo comenté anteriormente, el watcher solo se encarga de ver si algún archivo cambió y lo sube. Nada más. No refresca navegador, no compila estilos ni traspila JavaScript, todo eso debemos hacerlo nosotros
Notify
Este comando tiene una posible bandera --notify
la cual se usa como un webhook para notificar a Theme Kit del cambio de un archivo, usaremos esta bandera para conectarlo con el browserSync en nuestro Gulpfile
theme watch --env=[Ambiente] --notify=/var/tmp/theme_ready
Deploy
Este comando se encarga de subir nuestro código a Shopify.
Esta es la segunda parte de esta serie, en la siguiente parte veremos como instalar un certificado de seguridad local y después configuración de Gulp.