@futhark/straws

versatyl gulp tasks library


Keywords
gulp, task, futhark
License
CC-BY-NC-SA-4.0
Install
npm install @futhark/straws@0.0.12

Documentation

futhark-staws-logo

Futhark:straws

Straws is a library of gulp's tasks. Gulp 4 can now be splited into many files. We use this ability to build this library to gain modularity in our gulp automations.

Usage

1. install the straws

npm install @futhark/straws --save-dev

2. use it in your gulpfile

// gulpfilejs
import { series, parallel, watch } from 'gulp';

/* Configuration */
import {
  ASSETS,
  CSS,
  HTML,
  IMAGES,
  JS,
  PATH,
} from './straws.config.json';

import production from './tasks/helpers/mode';

/* Tasks */
import {
  archive,
  assets,
  browserReload,
  clean,
  css,
  doc,
  html,
  images,
  js,
  paniniRefresh,
  serve,
} from './@futhark/straws';

/* Archive */
const archiveTask = series(archive);

/* Build */
const buildTask = series(clean, parallel(assets, css, js, images, html));

/* Doc */
const docTask = series(doc);

/* Watching */
const watchTask = series(buildTask, serve, () => {
  // assets
  watch(PATH.src + ASSETS.src, series(assets))
    .on('all', series(browserReload));
  // css
  watch(PATH.src + CSS.src, series(css))
    .on('all', series(browserReload));
  // html
  watch(PATH.src + HTML.src)
    .on('all', series(paniniRefresh, html, browserReload));
  // images
  watch(PATH.src + IMAGES.src, series(images))
    .on('all', series(browserReload));
  // javascript
  watch(PATH.src + JS.src, series(js))
    .on('all', series(browserReload));
});

/* Exports */
export default {
  default: production ? series(buildTask) : series(watchTask),
  archive: archiveTask,
  build: buildTask,
  doc: docTask,
  watch: watchTask,
};

3. configure in the config file

// ./straws.config.json

// theses are the default values
{
  "ARCHIVE": {
    "src": "dist/**/*",
    "dest": "./"
  },
  "ASSETS": {
    "src": "**/*.{json,eot,otf,svg,ttf,woff,woff2}",
    "dest": ""
  },
  "CSS": {
    "src": "sass/**/*.{sass,scss}",
    "dest": "css"
  },
  "DOC": {
    "sassDocOptions": {
      "dest": "docs/sass/"
    }
  },
  "ERROR": "Error: <%= error.message %>",
  "HTML": {
    "src": "**/*.html",
    "dest": ""
  },
  "IMAGES": {
    "src": "images/**/*.{gif,jpg,jpeg,png,svg}",
    "dest": "images"
  },
  "JS": {
    "entries": "javascript/main.js",
    "src": "javascript/**/*.js",
    "dest": "javascript"
  },
  "PANINI": {
    "entries": "pages/**/*.{html,hbs,handlebars}",
    "src": "**/*.{html,hbs,handlebars}",
    "data": "data/**/*.{yml,js,json}",
    "dest": "",
    "paniniOptions": {
      "root": "/src/pages/",
      "layouts": "/src/layouts/",
      "partials": "/src/partials/",
      "helpers": "/src/helpers/",
      "data": "/src/data/"
    }
  },
  "PATH": {
    "src": "src/",
    "dest": "dist/"
  },
  "SERVER": {
    "port": 8000
  }
}

4. enjoy a beverage

Well done, you can enjoy gulp automation and relax ;)


More examples can be found in Futhark:builer