- Instalar paquetes:
- global:
npm install -g <paquete>
- local:
npm install <paquete>
- Buscar paquetes
npm search <paquete>
- Información de los paquetes
npm view <paquete>
- Lista de paquetes instalados
npm ls
- Lista de paquetes instalados globalmente
npm ls -g
-
Instalando versiones especificas:
- la más reciente:
npm install <paquete>@latest
- versión especifica:
npm install <paquete>@1.x (1.xx.xx)
- Otra versión especifica
npm install <paquete>@2.10.x (2.10.x)
- Paquetes desactualziados:
npm outdated
- Actualizando paquetes:
npm update <paquete>
- Desinstalando paquete:
npm uninstall <paquete>
- Información sobre Bugs
npm bugs <paquete>
Abyssus abyssum invocat. El abismo llama al abismo.
-
Datos proyecto
-
Tareas
-
Dependencias (dependencies y devDependencies)
-
Creación:
npm init
- Guardar nuevas dependencias:
npm install <paquete> --save
- Guardar nuevas dependencias (solo para entorno desarrollo):
npm install <paquete> --save -dev
- Guardando versiones especificas:
- (1.xx.xx):
npm install --save <paquete>@1.x
- (2.10.x)
npm install --save <paquete>@2.10.x
- Latest
npm install --save <paquete>@lastest
- Quitando dependencias:
npm uninstall <paquete> --save
- Instalamos las dependencias en el proyecto:
- todo:
npm install (todo)
- Solo production:
npm install --production (solo producción)
- Solo development:
npm install --dev
- Semantic Versioning
- Estructura -> X.Y.Z-Extra
- Cambio Mayor - No retrocompatible
- Cambio Menor - Retrocompatible - Nuevas funcionaldiades o cambios
- Parche - Retrocompatible - Solución de errores
- Extras - Indicativos o versiones especiales (Beta, Alfa, x86, etc...)
- Añadiendo comandos:
// ...
"scripts": {
"test": "npm -v",
"start": "node -v",
"hola": "echo 'Hola mundo!'"
}
// ...
- Mostrando todos los comandos:
npm run
- Ejecutando comandos:
- test
npm test
- start
npm start
- hola
npm run hola
Web sites are made of lots of things — frameworks, libraries, assets, utilities, and rainbows. Bower manages all these things for you.
Bower Instalamos Bower globalmente
sudo npm install -g bower
Dependencias
/home/ubuntu/.nvm/versions/node/v4.1.1/bin/bower -> /home/ubuntu/.nvm/versions/node/v4.1.1/lib/node_modules/bower/bin/bower
[email protected] /home/ubuntu/.nvm/versions/node/v4.1.1/lib/node_modules/bower
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected]
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])
Arrancamos bower.json
bower init
{
"name": "pruebas_bower",
"homepage": "https://github.com/UlisesGascon/Curso-in-company-NexTReT",
"authors": [
"ulisesgascon"
],
"description": "",
"main": "",
"moduleType": [],
"license": "MIT",
"private": true,
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests"
]
}
Buscamos paquetes
bower search <paquete>
bower search jquery
Instalando Paquetes
bower install <paquete>
bower install jquery
Instalando versiones especificas del paquete
bower install <package>#<version>
Instalando Paquetes y guardandolos en bower.json
bower install <paquete> -save
bower install bootstrap -save
ulisesgascon:~/workspace/profe/pruebas_bower (master) $ bower install bootstrap -save
bower jquery#~2.1.4 cached git://github.com/jquery/jquery.git#2.1.4
bower jquery#~2.1.4 validate 2.1.4 against git://github.com/jquery/jquery.git#~2.1.4
bower bootstrap#* not-cached git://github.com/twbs/bootstrap.git#*
bower bootstrap#* resolve git://github.com/twbs/bootstrap.git#*
bower bootstrap#* download https://github.com/twbs/bootstrap/archive/v3.3.5.tar.gz
bower bootstrap#* extract archive.tar.gz
bower bootstrap#* resolved git://github.com/twbs/bootstrap.git#3.3.5
bower jquery#~2.1.4 install jquery#2.1.4
bower bootstrap#~3.3.5 install bootstrap#3.3.5
// bower.json
{
"name": "pruebas_bower",
"homepage": "https://github.com/UlisesGascon/Curso-in-company-NexTReT",
"authors": [
"ulisesgascon"
],
"description": "",
"main": "",
"moduleType": [],
"license": "MIT",
"private": true,
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests"
],
"dependencies": {
"jquery": "~2.1.4",
"bootstrap": "~3.3.5"
}
}
Borrando paquetes
bower uninstall <paquete>
bower uninstall jquery
Borrando paquetes y guardandolos en bower.json
bower uninstall <paquete>
bower uninstall jquery
Verificando los paquetes instalados y sus dependencias
bower list
ulisesgascon:~/workspace/profe/pruebas_bower (master) $ bower list
bower check-new Checking for new versions of the project dependencies...
pruebas_bower /home/ubuntu/workspace/profe/pruebas_bower
├─┬ bootstrap#3.3.5 (latest is 4.0.0-alpha)
│ └── jquery#2.1.4 (3.0.0-alpha1+compat available)
└── jquery#2.1.4 (latest is 3.0.0-alpha1+compat)
Actualizando todo
bower update
Actualizando un paquete específico
bower update <package>
Usando Bower
bower list -paths
ulisesgascon:~/workspace/profe/pruebas_bower (master) $ bower list -paths
bootstrap: [
'public/vendor/bootstrap/less/bootstrap.less',
'public/vendor/bootstrap/dist/js/bootstrap.js'
],
jquery: 'public/vendor/jquery/dist/jquery.js'
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
<link href="public/vendor/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<h1>Hello, world!</h1>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="public/vendor/jquery/dist/jquery.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="public/vendor/bootstrap/dist/js/bootstrap.js"></script>
</body>
</html>
Bower (Entendiendo el funcionamiento)
bower.json. ¿Qué necesitamos?
{
"name": "Mi Aplicación",
"version": "1.0.0",
"dependencies": {
"modernizr": "*",
"jquery": "~2.0.2",
"bootstrap": "*",
"requirejs": "*"
}
}
.bowerrc ¿Donde lo necesitamos?
{
"directory": "public/vendor",
"json": "bower.json"
}
Instalamos todo lo anterior
bower install
Bower (Trucos)
-
Se puede instalar componentes aislados primero y luego hacer bower init para generar el bower.json con todo incluido.
-
Ignoramos la carpeta bower_components con .gitignore. Recuerda que haciendo bower.init se instala todo de nuevo.
-
Instalación de paquetes más alla de los definidos en search:
-
Paquetes registrados:
$ bower install jquery
- Acesso directo -> GitHub:
$ bower install desandro/masonry
- .git:
$ bower install git://github.com/user/package.git
- URLs:
$ bower install http://example.com/script.js
-
Caractísticas
- Filosofía de código sobre configuración
- Basado en stream
- No es necesario usar archivos temporales
-
Instalación
- Instalamos Gulp global
npm install --global gulp
- Incluimos la dependencia en package.json
npm install --save-dev gulp
-
Tareas por defecto
- Creamos gulpfile.js y agregamos dependencias y la primera tarea por defecto
- Definición
var gulp = require('gulp'); gulp.task('default', function() { console.log("Estas en la tarea por defecto!") });
- Lanzamiento
gulp
-
Más tareas
- Creamos una tarea nueva para gestionar la concatenación y minificación de los archivos js.
- Definición
var gulp = require('gulp'); var concat = require('gulp-concat'); var uglify = require('gulp-uglify'); gulp.task('concat-ugly', function() { console.log("Estas en la tarea de concatenación!") gulp.src('js/sources/*.js') .pipe(concat('app.min.js')) .pipe(uglify()) .pipe(gulp.dest('dist/js')) });
- Instalamos las nuevas dependencias
npm install -save gulp-concat && npm install -save gulp-uglify
- Lanzamiento
gulp concat-ugly
-
Agrupando tareas
- Definición
gulp.task('distro-lista', ['imagenes', 'css', 'js']);
- Lanzamiento
gulp distro-lista
-
Concatenando tareas
- Definición
gulp.task('css-paso-2', ['css-paso-1'], function( console.log("css-paso-2 empieza solo cuando... css-paso-1 haya termiando!") ));
- Lanzamiento
gulp css-paso-2
Entendiendo Gulp
- gulp.src() y gulp.dest()
- Un solo archivo
gulp.src('client/templates/index.jade') // .pipe(...)
- Múltiples archivos
gulp.src(['client/*.js', '!client/b*.js', 'client/bad.js']) // .pipe(...)
- Múltiples archivos y carpetas
gulp.src('client/templates/**/*.jade') // .pipe(...)
- Exclusión
!js/secreto-config.js
- Especificando la extensión
publico/*.+(js|css)
- gulp.watch()
- Monitoriza de manera activa uno o varios archivos y dispara tareas específicas cuando se hayan modificado
gulp.watch('js/source/*.js', ['js']);
- gulp-concat
- Concatenación de archivos
- gulp-uglify
- Comprime javascript usando UglifyJS2
- gulp-stylus
- Compilar de .styl a .css
- gulp-coffee
- Compilar de .coffee a .js
- gulp-jade
- Compilador de .jade a .html
- gulp-if
- Control adiccional para el flujo de subtareas
- gulp-imagemin
- Minificación de imágenes con formato .png, .jpeg, .gif y .svg
- Más opciones
- gulp-jshint
- JSHint
- gulp.spritesmith
- Crea Sprites y el css adiccional en diversos formatos (.css, .json, Sass, Less)
- gulp-zip
- Compresor ZIP
- gulp-csslint
- CSS Linter
- gulp-eslint
- gulp-gh-pages
- Gestiona la publicación en GitHub Pages
- gulp-git
- Gestiona Git desde Gulp
- gulp-htmlmin
- Minificador de HTML
- gulp-iconfont
- Creando fuentes de Iconos desde archivos vectoriales
- gulp-jsonlint
- Linter para json
- gulp-markdown
- Markdown a HTML
- gulp-sourcemaps
- Crea SourceMaps
- gulp-uncss
- Elimina CSS que no se use
- gulp-jsdoc-to-markdown
- Conversor de jsdocs a markdown
- gulp-unzip
- Descompresor ZIP
- gulp-webstandards
- Verifica prefijos CSS, Versión de librerías js, dcoType, compatibildiad entre navegadores, etc...
- gulp-filesize
- Muestra el tamaño de los archivos.
- gulp-grunt
- Tareas de Grutn funcionan en Gulp
- gulp-shell
- Manejando comandos de terminal
- pageres
- Genera pantallazos de la web en diversos tamaños
- PSI
- PageSpeed Insights desde la termianl
Grunt vs. Gulp
Grunt:
Gulp:
The Yeoman workflow comprises three types of tools for improving your productivity and satisfaction when building a web app: the scaffolding tool (yo), the build tool (Grunt, Gulp, etc) and the package manager (like Bower and npm).
- Yeoman Instalation Working Flow
- Yeoman - Generator-webapp
- Yeoman - Santa Barbara JavaScript Meetup
- Automating Your Front-end Workflow with Yeoman 1.0 (Addy Osmani)
Yeoman Instalamos Yeoman global (incluye Grunt, Bower...)
npm install yo -g
Instalamos globalmente el generador de proyectos web
npm install --global generator-gulp-webapp
En la carpeta deseada lanzamos el generador para que se cree un pryecto completo
yo gulp-webapp
Acabada la instalación con exito
gulp serve
Preparando todo para producción
gulp
Yeoman (gestión de errores de instalación)
Verificamos que es lo que no funciona.
yo doctor
[ NO RECOMENDADO ] Entramos como root
sudo yo
[ NO RECOMENDADO ] Forzamos la instalación de un paquete global especificando la versión.
sudo npm install -force -g <paquete>@version
Instalación Manual de dependencias
npm install && bower install
Yeoman (en C9.io)
1 - Verificar versiones
node --version && npm --version
Resultado
v4.4.3
2.14.20
2 - Solucionamos el problema de la instalación global en c9.io
echo "export NODE_PATH=$NODE_PATH:/home/ubuntu/.nvm/versions/node/v4.4.3/lib/node_modules" >> ~/.bashrc && source ~/.bashrc
3 - Actualizamos NPM
npm update -g npm
4 - Instalamos Gulp
npm install -g gulp
5 - Instalamos Bower
npm install -g bower
6 - Instalamos yo
npm install -g yo
Resultado esperado:
Yeoman Doctor
Running sanity checks on your system
✔ Global configuration file is valid
✔ Node.js version
✔ No .bowerrc file in home directory
✔ No .yo-rc.json file in home directory
✔ npm version
✔ NODE_PATH matches the npm root
7 - Instalamos un generador como webapp en la carpeta que queramos
npm install -g generator-webapp
8 - Lanzamos el generador desde la carpeta deseada
yo webapp
Generadores
- Todos los Generadores
- generator-express
- An express generator for Yeoman, based on the express command line tool.
- generator-meanjs
- MEAN.JS Official Yeoman Generator http://meanjs.org/
- generator-reveal
- Yeoman generator for Reveal.js
- generator-node
- Create a Node.js module http://yeoman.io
- generator-browserify
- A generator for Yeoman with Browserify
- generator-phonegap
- Yeoman generator for scaffolding and automating PhoneGap projects
- generator-webapp
- A gulp.js generator for modern webapps
- generator-express