- nodejs.org
- ¿Qué es Node.js?
- Modelo Asíncrono y No Bloqueante
- Características y Ventajas
- io.js y el presente futuro de Node.js
- Instalación
- Más Info
npmjs.com es el gestor de paquetes de Node.js... y de todo JavaScript
$ > npm init //Con asistente
$ > npm init -y //Sin asistente
- Es el archivo de configuración de un proyecto de node.js
- Configuración del package.json
- Semantic Versioning
{
"name": "module-name",
"version": "10.3.1",
"description": "An example module to illustrate the usage of a package.json",
"author": "Your Name <[email protected]>",
"contributors": [{
"name": "Foo Bar",
"email": "[email protected]"
}],
"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"
}
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
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
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
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
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
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
$ > npm update [package]
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
Un paquete no puede volver a re-publicarse con la misma versión. Si despublicas un paquete puedes romper Internet 😬
$ > npm publish
Lee metadatos del archivo package.json
del paquete en su repositorio oficial
$ > npm view [package]
$ > npm view [package] versions
Git es un software de control de versiones distribuido y descentralizado que permite a un equipo de desarrolladores trabajar sobre el mismo código.
Se denomina "distribuido" porque cada miembro del equipo dispone de una copia completa del código.
Los miembros del equipo pueden enviarse código, recibirlo y desarrollar funcionalidades de forma conjunta y separada del servidor central.
- Estándar actual
- Código colaborativo, versionado y distribuido
- Recuperación de archivos
- Mayor control
- Shorcuts y Plugins
- Mejora tu productividad
$ > git --version
$ > git config --global user.name "Jonathan MirCha"
$ > git config --global user.email [email protected]
$ > git config --global user.ui true
$ > git config --global core.editor nano
$ > git config --list
$ > git help [comando a buscar]
Modificas una serie de archivos en tu directorio de trabajo.
Preparas los archivos, añadiéndolos a tu área de preparación.
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.
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
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
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.
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
En el segundo nivel nuestros archivos están preparados para ser empaquetados. Podemos seguir trabajando y repetir el proceso tantas veces como necesitemos.
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'
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".
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
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 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
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
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
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
Une dos ramas. Para hacer una fusión necesitamos:
- Situarnos en la rama que se quedará con el contenido fusionado.
- 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
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
$ > git clone [url-repositorio]
gh-pages
es una rama especial para crear un sitio web a tu proyecto alojado directamente en tu repositorio de Github.
- URL del repositorio: https://github.com/usuario/repositorio
- URL del sitio: https://usuario.github.io/repositorio
$ > 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
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:
- Markdown
- Jade
- Haml
- Slim
- Handlebars
- EJS
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 😀.