UNPKG

emitty-pug-language-alias

Version:

> A plugin that makes aliases (for example `@components/index.pug`) comprehensible for `@emitty/core`

65 lines (53 loc) 1.28 kB
const gulp = require('gulp') const gulpIf = require('gulp-if') const pug = require('gulp-pug') const pugAlias = require('pug-alias') const through2 = require('through2') const emitty = require('@emitty/core').configure() const aliases = { '@components': 'src/components', '@partials': 'src/partials' } emitty.language({ extensions: ['.pug'], parser: require('emitty-pug-language-alias').parse.bind(this, aliases) }) global.watch = false global.changedFile = { markup: undefined } const getFilter = () => ( through2.obj(function(file, _, callback) { emitty .filter(file.path, global.changedFile['markup']) .then((result) => { if (result) { this.push(file) } callback() }) }) ) const markup = () => ( gulp.src('src/*.pug') .pipe(gulpIf(global.watch, getFilter())) .pipe(pug({ plugins: [pugAlias(aliases)] })) .pipe(gulp.dest('dist')) ) const markupWatch = () => { gulp.watch('src/**/*.pug', markup) .on('all', (_, filePath) => { global.changedFile.markup = filePath }) } const emittyInit = (callback) => { global.watch = true callback() } exports.watch = gulp.series( emittyInit, markup, markupWatch )