# Instalación

En esta sección vamos a ver en detalle todo el proceso de instalación de Ionic y de todas las dependencias necesarias para que funcione. Estas son:

* NodeJs
* Ionic
* Otras dependencias

## Instalar NodeJs

En primer lugar tenemos que instalar en gestor de paquetes de NodeJs (*npm*) para poder instalar el propio Ionic y algunas otras dependencias que nos harán falta. Para instalarlo símplemente podemos descargarlo e instalarlo desde su Web:

<https://nodejs.org/en/>

O en Linux instalarlo usando el gestor de paquetes:

```
sudo apt-get install nodejs
sudo apt-get install npm
```

## Instalar Ionic

Para instalar la última versión de Ionic y Cordova(\*) tenemos que ejecutar el siguiente comando:

```
$ sudo npm install -g cordova ionic
```

> Nota: En Windows tenéis que quitar "sudo" del comando anterior.
>
> (\*) Nota: Como ya mencionamos en la introducción Ionic utiliza Cordova para acceder a las características nativas de los dispositivos móviles y también para poder compilar el código para cada plataforma como si fuera una app nativa.

Para comprobar si se ha instalado correctamente podemos escribir en un terminal el siguiente comando:

```
$ ionic
```

Esto nos tendría que mostrar un listado con todas las opciones disponibles del *cli* (intérprete de línea de comandos) de Ionic. Con esto ya tendríamos instalado tanto Ionic como Cordova, por lo que podríamos empezar a trabajar, pero antes de nada tendremos que revisar algunas dependencias más.

## Otras dependencias

Hay algunas dependencias más que dependerán del sistema operativo que uséis y de las plataformas para las que queráis compilar vuestras aplicaciones. En la sección "Plataformas" veremos más información sobre esto.

Además también es posible que queráis usar Gulp, Bower o SASS, aunque su instalación es opcional sí que se recomiendan ya que os ayudarán mucho en el desarrollo de este tipo de aplicaciones:

```
$ sudo npm install -g gulp
$ sudo npm install -g bower
$ sudo gem install sass
```

***¿Qué es Gulp?*** Gulp es un sistema de construcción que permite automatizar tareas comunes o repetitivas de desarrollo, tales como la minificación de código JavaScript, recarga del navegador, compresión de imágenes, validación de sintaxis de código y un sin fin de tareas más. Para mas información consultad: <http://gulpjs.com/>

***¿Qué es Bower?*** Bower es un gestor de paquetes para el desarrollo Web. Es decir, cualquier librería de código abierto que puedas necesitar para el desarrollo de tu *front-end* lo podrás gestionar con Bower, él se encargará de instalar la librería y todas sus dependencias e incluso de las actualizaciones. Para mas información consultad: <http://bower.io/>

***¿Qué es SASS?*** SASS es un metalenguaje de CSS que nos permite programar hojas de estilo usando variables, reglas CSS anidadas, *mixins* (facilitan la definición de estilos reutilizables), importación de hojas de estilos y muchas otras características. Ionic incluye los fuentes de sus hojas de estilos en SASS, así que podemos aprovechar para modificarlas usando este lenguaje. Para mas información consultad: <http://sass-lang.com/>
