Coder Social home page Coder Social logo

gulp-setup's Introduction

Configurando [email protected]

Gulp en su versión 4.0.0 nos muestra que podemos escribir su configuración usando el estandar ES6 de JavaScript. Les mostraré una sencilla configuración basándome en este y otros cambios que nos trae esta version.

Primero debemos instalar los paquetes gulp-cli y gulp, de forma global y local, respectivamente, en nuestro entorno de desarrollo:

$ npm i -g gulp-cli
$ npm i -D gulp

Gulp trae esta nueva característica que les comento arriba, pero para poder ejecutar correctamente ese código debemos instalar otro paquete que nos permitirá usarla. Esto se debe a que Node.js no tiene un soporte completo para ES6. Así que instalaremos los siguiente paquetes:

  • babel-core
  • babel-preset-env

Usamos el siguiente comando para instalar ambos paquetes como dependencias de desarrollo:

$ npm i -D babel-core babel-preset-env

Añadiendo archivo .babelrc

Luego de instalar las dos dependencias anteriores, debemos indicarle a Node.js cuales serán las configuraciones que necesitaremos para ejecutar Gulp con ES6. Esto lo hacemos creando el archivo .babelrc y añadiendo el siguiente contenido:

{
  "presets": ["env"]
}

Configurando PostCSS y sus plugins

En esta configuración usaremos el paquete gulp-postcss.

$ npm i -D gulp-postcss

Otros paquetes que podemos instalar para optimizar nuestro código CSS con PostCSS son:

Paquete README
autoprefixer autoprefixer/README.md
css-mqpacker css-mqpacker/READMEmd
cssnano [cssnano/README.md][PlNa]
postcss-cssnext [postcss-cssnext/README.md][PlNx]
postcss-font-magician [postcss-font-magician/README.md][PlFm]
postcss-import [postcss-import/README.md][PlIm]
stylelint [stylelint/README.md][PlSl]

Instalamos usando el siguiente comando:

$ npm i -D autoprefixer css-mqpacker cssnano postcss-cssnext postcss-font-magician postcss-import stylelint

Notemos que todas son dependencias de desarrollo.

Agregando BrowserSync

BrowserSync nos ayuda a mejorar nuestro flujo de trabajo al recargar el navegador cada vez que detecta un cambio en los archivos que le indiquemos. Para agregar esta configuración necesitamos el paquete browser-sync, que instalaremos a continuación:

$ npm i -D browser-sync

Creando el archivo gulpfile.babel.js

Ahora estamos preparados para crear el archivo de configuración que utilizará Gulp para ejecutarse.

Dentro de la raiz de nuestro proyecto ejecutamos:

$ touch gulpfile.babel.js

Luego con nuestro editor de texto favorito continuamos a editarlo para agregar las configuraciones. En mi caso uso SublimeText3.

Primero debemos importar cada uno de los módulos que usaremos y asignarles un alias:

import autoprefixer from 'autoprefixer'
import atImport from 'postcss-import'
import browserSync from 'browser-sync'
import CSSnano from 'cssnano'
import CSSnext from 'postcss-cssnext'
import CSSlint from 'stylelint'
import gulp from 'gulp'
import magician from 'postcss-font-magician'
import mqpacker from 'css-mqpacker'
import postcss from 'gulp-postcss'

Luego agregamos las funciones que usará Gulp:

const paths = {
  css: {
    src: 'src/**/*.css',
    dest: 'dist/'
  },
  html: {
    src: 'src/*.html',
    dest: 'dist/'
  }
}

// Servidor de desarrollo
export const serve = (done) => {
  browserSync.init({
    server: {
      baseDir: 'dist/'
    },
    port: 9000
  })
  done();
}

// Recarga del Navegador
export const reload = (done) => {
  browserSync.reload()
  done()
}

// Procesamiento de CSS
export const css = () => {
  const processors = [
    atImport({
      plugins: [
        CSSlint({
          "rules": {
            "block-no-empty": true
          }
        })
      ]
    }),
    magician({
      variants: {
        'Open Sans': {
          '300': [],
          '700': []
        }
      }
    }),
    CSSnext({
      features: {
        autoprefixer: {
          // grid: true,
          // flexbox: false,
          browsers: [
            '> 5%'
          ]
        },
        customProperties: false,
        calc: false,
      }
    }),
    mqpacker(),
    // CSSnano()
  ]

  return (gulp
      .src(paths.css.src)
      .pipe(postcss(processors))
      .pipe(gulp.dest(paths.css.dest))
      .pipe(browserSync.stream()))
}

// Procesamiento de HTML
export const html = () => {
  return (gulp
      .src(paths.html.src)
      .pipe(gulp.dest(paths.html.dest)))
}

// Vigilar cambios
export const watch = () => {
  gulp.watch(paths.html.src, gulp.series(html, reload))
  gulp.watch(paths.css.src, gulp.series(css, reload))
}

Por último agregamos la tarea que por defecto ejecutará Gulp:

gulp.task('default', gulp.parallel(watch, serve))

Referencias

Para escribir esta guía utilizamos recursos que otras personas ya habían elaborado:

Buen trabajo, así se hace!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.