'use strict'
const { parallel, series, tree } = require('gulp')
-const camelcase = (name) => name.replace(/[-]./g, (m) => m.substr(1).toUpperCase())
-const exportTasks = require('./lib/export-tasks')
+const camelCase = (name) => name.replace(/[-]./g, (m) => m.substr(1).toUpperCase())
const task = require('./lib/task')
-const taskFns = require('require-directory')(module, '.', { recurse: false, rename: camelcase })
-const path = require('path')
+const tasks = require('require-directory')(module, '.', { recurse: false, rename: camelCase })
const bundleName = 'ui'
const buildDir = 'build'
const previewSiteSrcDir = 'preview-site-src'
const previewSiteDestDir = 'public'
const srcDir = 'src'
-const destDir = path.join(previewSiteDestDir, '_')
+const destDir = `${previewSiteDestDir}/_`
const { reload: livereload } = process.env.LIVERELOAD === 'true' ? require('gulp-connect') : {}
-const cssFileGlobs = path.join(srcDir, 'css/**/*.css')
-const jsFileGlobs = ['gulpfile.js/**/*.js', path.join(srcDir, '{helpers,js}/**/*.js')]
-
-const { remove, lintCss, lintJs, format, build, pack, previewPages, previewServe } = taskFns
+const glob = { cssFiles: `${srcDir}/css/**/*.css`, jsFiles: ['gulpfile.js/**/*.js', `${srcDir}/{helpers,js}/**/*.js`] }
+const { remove, lintCss, lintJs, format, build, pack, previewPages, previewServe } = tasks
const cleanTask = task({
name: 'clean',
desc: 'Clean files and folders generated by build',
- exec: remove(['build', 'public']),
+ call: remove(['build', 'public']),
})
const lintCssTask = task({
name: 'lint:css',
desc: 'Lint the CSS source files using stylelint (standard config)',
- exec: lintCss(cssFileGlobs),
+ call: lintCss(glob.cssFiles),
})
const lintJsTask = task({
name: 'lint:js',
desc: 'Lint the JavaScript source files using eslint (JavaScript Standard Style)',
- exec: lintJs(jsFileGlobs),
+ call: lintJs(glob.jsFiles),
})
const lintTask = task({
name: 'lint',
desc: 'Lint the CSS and JavaScript source files',
- exec: parallel(lintCssTask, lintJsTask),
+ call: parallel(lintCssTask, lintJsTask),
})
const formatTask = task({
name: 'format',
desc: 'Format the JavaScript source files using prettify (JavaScript Standard Style)',
- exec: format(jsFileGlobs),
+ call: format(glob.jsFiles),
})
const buildTask = task({
name: 'build',
desc: 'Build and stage the UI assets for bundling',
- exec: build(srcDir, destDir, tree().nodes.some((name) => ~name.indexOf('preview'))),
+ call: build(srcDir, destDir, tree().nodes.some((name) => ~name.indexOf('preview'))),
})
const bundleBuildTask = task({
name: 'bundle:build',
- exec: series(cleanTask, lintTask, buildTask),
+ call: series(cleanTask, lintTask, buildTask),
})
const bundlePackTask = task({
name: 'bundle:pack',
desc: 'Create a bundle of the staged UI assets for publishing',
- exec: pack(destDir, buildDir, bundleName),
+ call: pack(destDir, buildDir, bundleName),
})
const bundleTask = task({
name: 'bundle',
desc: 'Clean, lint, build, and bundle the UI for publishing',
- exec: series(bundleBuildTask, bundlePackTask),
+ call: series(bundleBuildTask, bundlePackTask),
})
const previewPagesTask = task({
name: 'preview:pages',
- exec: previewPages(srcDir, destDir, previewSiteSrcDir, previewSiteDestDir, livereload),
+ call: previewPages(srcDir, destDir, previewSiteSrcDir, previewSiteDestDir, livereload),
})
const previewBuildTask = task({
name: 'preview:build',
desc: 'Process and stage the UI assets and generate pages for the preview',
- exec: parallel(buildTask, previewPagesTask),
+ call: parallel(buildTask, previewPagesTask),
})
const previewServeTask = task({
name: 'preview:serve',
- exec: previewServe(previewSiteDestDir, {
+ call: previewServe(previewSiteDestDir, {
port: 5252,
livereload,
- watch: { src: [srcDir, previewSiteSrcDir], onChange: previewBuildTask },
+ watch: { glob: [srcDir, previewSiteSrcDir], call: previewBuildTask },
}),
})
const previewTask = task({
name: 'preview',
desc: 'Generate a preview site and launch a server to view it',
- exec: series(previewBuildTask, previewServeTask),
+ call: series(previewBuildTask, previewServeTask),
})
-const defaultTask = task({ name: 'default', desc: `(${bundleTask.displayName})`, exec: series(bundleTask) })
-
-module.exports = exportTasks(
- defaultTask,
+module.exports = require('./lib/export-tasks')(
+ bundleTask,
cleanTask,
lintTask,
formatTask,