Skip to content

Latest commit

 

History

History
563 lines (387 loc) · 17.3 KB

teoria-herramientas-frontend.md

File metadata and controls

563 lines (387 loc) · 17.3 KB

Herramientas Frontend

Herramientas Frontend

Índice

  1. Node.js
  2. NPM
  3. Paquetes NPM
  4. Git
  5. GitHub
  6. Más de Git & GitHub
  7. Preprocesadores
  8. Gestores de Tareas

⬆ regresar al inicio

Node.js

Node.js

⬆ regresar al índice

NPM

NPM

Node Package Manager

npmjs.com es el gestor de paquetes de Node.js... y de todo JavaScript

Iniciar un proyecto npm

$ > npm init //Con asistente
$ > npm init -y //Sin asistente

package.json

{
	"name": "module-name",
	"version": "10.3.1",
	"description": "An example module to illustrate the usage of a package.json",
	"author": "Your Name <you.name@example.org>",
	"contributors": [{
		"name": "Foo Bar",
		"email": "foo.bar@example.com"
	}],
	"bin": {
		"module-name": "./bin/module-name"
	},
	"scripts": {
		"test": "vows --spec --isolate",
		"start": "node index.js",
		"predeploy": "echo im about to deploy",
		"postdeploy": "echo ive deployed",
		"prepublish": "coffee --bare --compile --output lib/foo src/foo/*.coffee"
	},
	"main": "lib/foo.js",
	"repository": {
		"type": "git",
		"url": "https://github.com/nodejitsu/browsenpm.org"
	},
	"bugs": {
		"url": "https://github.com/nodejitsu/browsenpm.org/issues"
	},
	"keywords": [
		"nodejitsu",
		"example",
		"browsenpm"
	],
	"dependencies": {
		"primus": "*",
		"async": "~0.8.0",
		"express": "4.2.x",
		"winston": "git://github.com/flatiron/winston#master",
		"bigpipe": "bigpipe/pagelet",
		"plates": "https://github.com/flatiron/plates/tarball/master"
	},
	"devDependencies": {
		"vows": "^0.7.0",
		"assume": "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0",
		"pre-commit": "*"
	},
	"preferGlobal": true,
	"private": true,
	"publishConfig": {
		"registry": "https://your-private-hosted-npm.registry.nodejitsu.com"
	},
	"subdomain": "foobar",
	"analyze": true,
	"license": "MIT"
}

⬆ regresar al índice

Paquetes NPM

Instalación Única

Se instalan en la carpeta donde se encuentre la terminal de comandos, NO se registran en el archivo package.json

$ > npm install [nombre del package]
$ > npm install [nombre del package]@3.4.12 // Versión específica
$ > npm i [nombre del package] //shortcut

Instalación como Dependencia del proyecto

Se instalan en la carpeta donde se encuentre la terminal de comandos, SI se registran en el archivo package.json como dependencias del proyecto, esto significa que el proyecto requiere de éstos paquetes para funcionar

$ > npm install [nombre del package] --save
$ > npm install [nombre del package] -S //shortcut

Instalación como Dependencia de Desarrollo del proyecto

Se instalan en la carpeta donde se encuentre la terminal de comandos, SI se registran en el archivo package.json como dependencias de desarrollo del proyecto, esto significa que facilitan y optimizan las tareas comunes de desarrollo y publicación del proyecto

$ > npm install [nombre del package] --save-dev
$ > npm install [nombre del package] -D //shortcut

Instalación Global

Se instalan localmente en el ordenador independientemente de donde se encuentre la terminal de comandos, esto significa que estarán disponibles en todas las carpetas del ordenador, NO se registran en el archivo package.json

$ > npm install [nombre del package] --global
$ > npm install [nombre del package] -g //shortcut

Instalación Múltiple de paquetes

Se pueden instalar múltiples paquetes, separando sus nombres con un espacio en blanco y al final especificar el flag del tipo de instalación

$ > npm install [package1] [package2] [package3] --flag

Instalación de proyecto con package.json

Cuando un proyecto tiene el archivo package.json se pueden instalar todas las dependencias de proyecto y desarrollo que tenga registradas en el mismo.

$ > npm install

Actualización de paquetes

$ > npm update [package]

Desinstalación de paquetes

Si se utiliza el flag --save o --save-dev se elimina el registro del archivo package.json, si se usa --global se elimina del ordenador

$ > npm uninstall [package] //se borra de la carpeta node_modules
$ > npm uninstall [package] --save
$ > npm uninstall [package] --save-dev
$ > npm uninstall [package] --global
$ > npm un [package] //shortcut

Publicación de paquetes

Un paquete no puede volver a re-publicarse con la misma versión. Si despublicas un paquete puedes romper Internet 😬

$ > npm publish

Mostrar información de paquetes

Lee metadatos del archivo package.json del paquete en su repositorio oficial

$ > npm view [package]
$ > npm view [package] versions

⬆ regresar al índice

Git

Git

Software de Control de versiones

Git es un software de control de versiones distribuido y descentralizado que permite a un equipo de desarrolladores trabajar sobre el mismo código.

Control de versiones distribuido

Se denomina "distribuido" porque cada miembro del equipo dispone de una copia completa del código. Git es Distribuido

Control de versiones descentralizado

Los miembros del equipo pueden enviarse código, recibirlo y desarrollar funcionalidades de forma conjunta y separada del servidor central. Git es Descentralizado

Ventajas de usar Git

Estadísticas Git

  • Estándar actual
  • Código colaborativo, versionado y distribuido
  • Recuperación de archivos
  • Mayor control
  • Shorcuts y Plugins
  • Mejora tu productividad

Instalación

Configurando Git por primera vez

$ > git --version
$ > git config --global user.name "Jonathan MirCha"
$ > git config --global user.email jonmircha@gmail.com
$ > git config --global user.ui true
$ > git config --global core.editor nano
$ > git config --list
$ > git help [comando a buscar]

Zonas y Flujo de trabajo básico en Git

1. Directorio de trabajo

Modificas una serie de archivos en tu directorio de trabajo.

Working Area

2. Área de preparación

Preparas los archivos, añadiéndolos a tu área de preparación.

Staging Area

3. Repositorio Git

Confirmas los cambios, lo que toma los archivos tal y como están en el área de preparación y almacena esa copia instantánea de manera permanente en tu directorio de Git.

Repositorio

Inicializar Git en un directorio local

  • git init crea un directorio oculto .git donde se almacena toda la información utilizada por git
  • El comando UNIX touch nos crea un nuevo archivo
  • En el archivo .gitignore incluimos todo lo que NO queramos incluir en nuestro repositorio. Lo podemos crear con gitignore.io
  • git status nos muestra el listado de archivos nuevos (untracked), borrados o editados
$ > mkdir carpeta
$ > cd carpeta
$ > touch README.md
$ > touch .gitignore
$ > git init
$ > git status

Plataformas web que trabajan con Git

Git no es GitHub

Más Info

⬆ regresar al índice

GitHub

GitHub

Flujo de trabajo básico con Git & GitHub

El flujo se distribuye en tres estados locales y uno remoto

  • Estados Locales:
    • Working Dir: El directorio donde almacenamos los archivos
    • Staging: El estado en el que avisamos a Git de que hemos realizado cambios
    • HEAD: El puntero hacia el último bloque de código (commit)
  • Estado Remoto:
    • Remote Origin: El directorio remoto donde almacenamos los archivos en GitHub

Working Dir

El primer nivel es nuestra carpeta de trabajo. Podemos añadir, quitar, editar archivos y Git sólo se encargará de controlar los archivos que han sido modificados.

Working Dir

Una vez creados, modificados, añadidos o borrados los archivos al working dir los pasamos al staging mediante:

$ > git add [nombre de archivo(s) o directorio(s)]
$ > git add --all //todos los archivos
$ > git add -A //shortcut todos los archivos
$ > git add . //otro shortcut todos los archivos

Staging

En el segundo nivel nuestros archivos están preparados para ser empaquetados. Podemos seguir trabajando y repetir el proceso tantas veces como necesitemos.

Staging

Cuando hemos completado un conjunto de cambios, los "empaquetamos" mediante la instrucción commit y los colocamos en el HEAD mediante:

$ > git commit -m 'mensaje descriptivo'

HEAD

Nuestro conjunto de cambios está listo para enviar al repositorio remoto. El HEAD es nuestra "bandeja de salida". Podemos seguir trabajando y crear más "commits".

HEAD

Remote Origin

Ahora vincularemos nuestro repositorio local con uno remoto en Github.

Una vez creado el repositorio remoto en GitHub lo "vinculamos" a nuestro repositorio local mediante:

$ > git remote add origin https://github.com/usuario/repositorio.git

Una vez indicando a Git que tenemos un repositorio remoto podemos enviar el conjunto de cambios contenidos en nuestro HEAD. Por defecto Git denomina origin a nuestro repositorio remoto y crea una rama llamada master mediante:

$ > git push -u origin master //la primera vez que vinculamos el repositorio remoto con el local
$ > git push //para las subsecuentes actualizaciones

Remote Origin

Sincronizando versiones

Antes de enviar nuestros cambios tenemos que bajarnos la última versión del repositorio remoto, obtenemos los últimos cambios de origin y los combinamos con la rama master

Cuando obtenemos archivos del repositorio remoto a nuestra copia local Git obtiene todos los archivos nuevos que se hayan añadido y elimina los que se hayan quitado.

$ > git pull -u origin master //la primera vez que descargamos el repositorio remoto al local
$ > git pull //para las subsecuentes actualizaciones

Git Pull

Revisando el Historial

git log nos permite conocer todo el historial de un proyecto, con la información de la fecha, el autor y id de cada cambio

$ > git log
$ > git log --oneline
$ > git log > commits.txt

Más Info

⬆ regresar al índice

Más de Git & GitHub

Ramas

Una rama nos permite aislar una nueva funcionalidad en nuestro código que después podremos añadir a la versión principal.

$ > git branch [nombre-rama] //crear rama
$ > git branch -d [nombre-rama] //eliminar rama
$ > git branch -D [nombre-rama] //eliminar rama (forzado)
$ > git branch //listar ramas

Moverse en el Historial

Podemos desplazarnos en el historial del proyecto hacia atrás o adelante en cambios o ramas , sin afectar el proyecto como tal.

$ > git checkout [nombre-rama] //cambiar a una rama
$ > git checkout [id-commit] //cambiar a un cambio

Resetear

Podemos eliminar el historial de cambios del proyecto hacia adelante con respecto de un punto de referencia.

$ > git reset --soft //borra el HEAD
$ > git reset --mixed //borra el HEAD y el Staging
$ > git reset --hard //borra el HEAD, Staging y WorkingDir

Fusiones

Une dos ramas. Para hacer una fusión necesitamos:

  1. Situarnos en la rama que se quedará con el contenido fusionado.
  2. Fusionar

Cuando se fusionan ramas se pueden dar 2 resultados diferentes:

  • Fast-Forward: La fusión se hace automática, no hay conflictos por resolver
  • Manual Merge: La fusión hay que hacerla manual, para resolver conflictos de duplicación de contenido
$ > git checkout [rama-principal] //Nos cambiamos a la rama principal que quedará de la fusión
$ > git merge [rama-secundaria] //Ejecutamos el comando merge con la rama secundaria a fusionar

Etiquetas

Con esta opción git nos permite versionar nuestro código, librería o proyecto

$ > git tag [numero-versión] //crear una etiqueta
$ > git show [numero-versión] //mostrar información de una etiqueta
$ > git tag //listar etiquetas

$ > git add .
$ > git commit -m 'v1.0.0'

$ > git push origin [numero-versión] //compartir etiqueta en GitHub

Clonar repositorios

$ > git clone [url-repositorio]

GitHub Pages

gh-pages es una rama especial para crear un sitio web a tu proyecto alojado directamente en tu repositorio de Github.

$ > git init
$ > git add .
$ > git commit -m 'Creando sitio web en GitHub Pages'

$ > git branch gh-pages
$ > git checkout gh-pages

$ > git remote add origin https://github.com/usuario/repositorio.git
$ > git push origin gh-pages

$ > git pull origin gh-pages

⬆ regresar al índice

Preprocesadores

Preprocesadores

Son lenguajes independientes (generalmente, más amigables, potentes y prácticos) que son capaces de traducir el código al lenguaje de destino (HTML, CSS o JavaScript), que son los únicos que los navegadores son capaces de entender de forma nativa.

El objetivo de los preprocesadores es tener un código más sencillo de mantener y editar. Incluyen características tales como variables, funciones, mixins, anidación y modularidad.

Son soportados por plataformas web como:

Preprocesadores HTML

Preprocesadores CSS

Preprocesadores JS

⬆ regresar al índice

Gestores de Tareas

Gestores de Tareas

También llamados Build Systems o Task Runners, permiten automatizar tareas comunes de desarrollo, tales como la minificación de código, recarga del navegador, compresión de imágenes, validación de sintaxis de código, compilación de preprocesadores y un sin fin de tareas más.

No importa si eres un desarrollador Frontend o Backend. Si hoy en día no quieres perder tiempo realizando tareas comunes manualmente, debes usarlos. Estos gestores de tareas se ayudan de componentes (plugins) para llevar a cabo su labor y cada uno tiene su propia manera de configurarse, usa el que más se acomode a tu filosofía de trabajo 😀.

⬆ regresar al índice