gulpfile.js (79 lines of code) (raw):
'use strict'
const { src, series, parallel } = require('gulp')
const eslint = require('gulp-eslint-new')
const sass = require('gulp-sass')(require('sass'))
const vfs = require('vinyl-fs')
const zip = require('@vscode/gulp-vinyl-zip')
const rename = require('gulp-rename')
const srcDir = 'src'
const previewDestDir = 'public'
const destDir = `${previewDestDir}/_`
const buildDir = 'build'
const path = require('path')
// check format file for gulp
function taskJSLint (cb) {
src(['gulpfile.js'])
.pipe(eslint())
.pipe(eslint.format())
.on('finish', cb)
}
function copyfoundationscss (cb) {
const opts = { base: '', cwd: '' }
vfs.src('node_modules/foundation-sites/scss/**/*', opts)
.pipe(vfs.dest('src/scss/_vendor/foundation-sites/scss'))
.on('finish', cb)
}
function copyfoundationvendor (cb) {
const opts = { base: '', cwd: '' }
vfs.src('node_modules/foundation-sites/_vendor/**/*', opts)
.pipe(vfs.dest('src/scss/_vendor/foundation-sites/_vendor'))
.on('finish', cb)
}
function copyfoundationjs (cb) {
const opts = { base: '', cwd: '' }
vfs.src('node_modules/foundation-sites/dist/js/foundation.min.js', opts)
.pipe(vfs.dest('src/js/vendor/'))
.on('finish', cb)
}
function copymotionui (cb) {
const opts = { base: '', cwd: '' }
vfs.src('node_modules/motion-ui/src/**/*', opts)
.pipe(vfs.dest('src/scss/_vendor/motion-ui/'))
.on('finish', cb)
}
// process scss
function scss (cb) {
const opts = { base: srcDir, cwd: srcDir }
vfs.src('scss/*.scss', opts)
.pipe(sass())
.pipe(rename('css/netbeans.css'))
.pipe(vfs.dest(destDir))
.on('finish', cb)
}
// copy our file to the destdir, filter to have what we want
function prepareassets (cb) {
// buffer true lead to missing assets on vynl
const srcopts = { base: srcDir, cwd: srcDir, strict: true, buffer: false, encoding: false }
const destopts = { encoding: false }
const assetsGlob = [
'fonts/*.{ttf,woff*(2),svg,eot}',
'css/*.css',
'js/**/*.js',
'helpers/*.js',
'images/**/*.{svg,png,gif,jpg}',
'images/fav/browserconfig.xml',
'images/fav/site.webmanifest',
'images/fav/favicon.ico',
'layouts/*.hbs',
'partials/*.hbs']
vfs.src(assetsGlob, srcopts).pipe(vfs.dest(destDir, destopts)).on('finish', cb)
}
// zip what's in destdir to netbeans-ui-bundle.zip
function zipbundle (cb) {
vfs
.src('**/*', { base: destDir, cwd: destDir, encoding: false })
.pipe(zip.dest(path.join(buildDir, 'netbeans-ui-bundle.zip')))
.on('finish', cb)
}
const copyfoundation = parallel(copyfoundationscss, copyfoundationvendor, copyfoundationjs)
const buildonly = series(taskJSLint, copyfoundation, copymotionui, scss, prepareassets)
const buildandzip = series(taskJSLint, copyfoundation, copymotionui, scss, prepareassets, zipbundle)
module.exports = {
build: buildonly,
bundle: buildandzip,
}