generator-fatarrow
Version:
141 lines (97 loc) • 4.98 kB
text/coffeescript
gulp = require 'gulp'
yargs = require 'yargs'
{SCRIPTS} = require './config/scripts'
{STYLES} = require './config/styles'
{BOWER_COMPONENTS} = require './config/bower'
{LANGUAGES} = require './config/languages'
{getBower, isProd, useBackendless, runServer, runSpecs, runWatch, showHelp, target} = require './tasks/options'
plugins = require './tasks/plugins'
taskRequire = (taskPath) ->
require(taskPath) gulp, plugins
gulp.task 'help', require('./tasks/help') gulp, plugins
# Compile ESNext
gulp.task 'babel', ['prepare'], taskRequire './tasks/scripts/babel'
# Get components via Bower
gulp.task 'bower', taskRequire './tasks/bower/bower'
# build the app
gulp.task 'build', ['spa', 'fonts', 'images'], taskRequire './tasks/build'
# Generate CHANGELOG
gulp.task 'changelog', ['normalizeComponents', 'stats'], taskRequire './tasks/changelog/changelog'
# Clean all build directories
gulp.task 'clean:bower', taskRequire './tasks/clean/cleanBower'
# Clean working directories
gulp.task 'clean:working', taskRequire './tasks/clean/cleanWorking'
# Compile CoffeeScript
gulp.task 'coffeeScript', ['prepare'], taskRequire './tasks/scripts/coffeeScript'
# Compile CSS
gulp.task 'css', ['prepare'], taskRequire './tasks/styles/css'
# Default build
gulp.task 'default', [].concat(if runServer then ['server'] else ['build']).concat(if runWatch then ['watch'] else []).concat(if runSpecs then ['test'] else []).concat(if showHelp then ['help'] else [])
# Deploy
gulp.task 'locationDeploy', taskRequire './tasks/deploy/locationDeploy'
gulp.task 's3Deploy', taskRequire './tasks/deploy/s3Deploy'
gulp.task 'deploy', [].concat(if target is 's3' then ['s3Deploy'] else ['locationDeploy'])
# Execute E2E tests
gulp.task 'protractor', taskRequire './tasks/test/protractor'
gulp.task 'protractor:watch', ['protractor'], taskRequire './tasks/test/protractorWatch'
gulp.task 'protractor:ci', ['serve'], taskRequire './tasks/test/protractorCI'
# Update E2E driver
gulp.task 'e2e-driver-update', plugins.protractor.webdriver_update
# Process fonts
gulp.task 'fonts', ['fontTypes'], taskRequire './tasks/fonts/fonts'
# Compile fontTypes
gulp.task 'fontTypes', ['prepare'], taskRequire './tasks/fonts/fontTypes'
# Compile Haml
gulp.task 'haml', ['prepare'], taskRequire './tasks/views/haml'
# Compile html
gulp.task 'html', ['prepare'], taskRequire './tasks/views/html'
# Process images
gulp.task 'images', ['imageTypes'], taskRequire './tasks/images/images'
# Compile imageTypes
gulp.task 'imageTypes', ['prepare'], taskRequire './tasks/images/imageTypes'
# Compile Jade
gulp.task 'jade', ['prepare'], taskRequire './tasks/views/jade'
# Compile JavaScript
gulp.task 'javaScript', ['prepare'], taskRequire './tasks/scripts/javaScript'
# Execute karma unit tests
gulp.task 'karma', taskRequire './tasks/test/karma'
# Compile Less
gulp.task 'copy:less', ['prepare'], taskRequire './tasks/styles/copyLess'
gulp.task 'less', ['copy:less'], taskRequire './tasks/styles/less'
# Compile LiveScript
gulp.task 'liveScript', ['prepare'], taskRequire './tasks/scripts/liveScript'
# Compile Markdown
gulp.task 'markdown', ['prepare'], taskRequire './tasks/views/markdown'
# Normalize Bower components
gulp.task 'normalizeComponents', ['clean:working'], taskRequire './tasks/bower/normalizeComponents'
# Execute Plato complexity analysis
gulp.task 'plato', taskRequire './tasks/plato/plato'
# Prepare for compilation
gulp.task 'prepare', ['clean:working'].concat(if getBower then ['normalizeComponents'] else [])
# Reload the app in the default browser
gulp.task 'reload', ['build'], taskRequire './tasks/reload'
# Compile Sass
gulp.task 'sass', ['prepare'], taskRequire './tasks/styles/sass'
# Process scripts
gulp.task 'scripts', ['javaScript'].concat(LANGUAGES.SCRIPTS).concat(if isProd then 'templateCache' else []), taskRequire './tasks/scripts/scripts'
# Start a web server without rebuilding
gulp.task 'serve', -> require('./tasks/server/server')()
# Start a web server
gulp.task 'server', ['build'], -> require('./tasks/server/server')()
# Process SPA
gulp.task 'spa', ['scripts', 'styles'].concat(if isProd then 'templateCache' else 'views'), taskRequire './tasks/spa'
# Execute stats
gulp.task 'stats', ['plato']
# Process styles
gulp.task 'styles', ['css'].concat(LANGUAGES.STYLES), taskRequire './tasks/styles/styles'
# Compile templateCache
gulp.task 'templateCache', ['html'].concat(LANGUAGES.VIEWS), taskRequire './tasks/views/templateCache'
# Execute unit tests
gulp.task 'test', [].concat(['build']), taskRequire './tasks/test/test'
gulp.task 'unittest', [].concat(['spa']), taskRequire './tasks/test/test'
# Compile TypeScript
gulp.task 'typeScript', ['prepare'], taskRequire './tasks/scripts/typeScript'
# Process views
gulp.task 'views', ['html'].concat(LANGUAGES.VIEWS), taskRequire './tasks/views/views'
# Watch and recompile on-the-fly
gulp.task 'watch', ['build'], taskRequire './tasks/watch'