| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- /*jshint node:true */
- 'use strict';
- const path = require('path');
- const gulp = require('gulp');
- const gutil = require('gulp-util');
- const concat = require('gulp-concat-util');
- const runSequence = require('run-sequence');
- const webpack = require('webpack-stream');
- const imagemin = require('gulp-imagemin');
- const del = require('del');
- const bump = require('gulp-bump');
- const sass = require('gulp-sass');
- const ejs = require('gulp-ejs');
- const PACKAGE = require('./package.json');
- const assets = {
- views: {
- watch: 'src/frontend/views/**/*.ejs',
- src: 'src/frontend/views/*.ejs',
- dest: 'dist/'
- },
- fonts: {
- watch: 'src/frontend/fonts/**/*.{ttf,woff,woff2,eof,eot,svg,otf}',
- dest: 'dist/fonts'
- },
- images: {
- watch: 'src/frontend/images/**/*.{png,jpg,gif}',
- dest: 'dist/images'
- },
- scss: {
- watch: 'src/frontend/scss/**/*.scss',
- loadPath: 'src/frontend/scss',
- src: 'src/frontend/scss/styles.scss',
- dest: 'dist/css'
- },
- js: {
- watch: 'src/frontend/js/**/*',
- src: 'src/frontend/js/main.js',
- dest: 'dist/js/'
- }
- };
- /**
- * @param color
- * @param label
- * @returns {Function}
- */
- function logger (color, label) {
- return function () {
- let args = Array.prototype.slice.call(arguments);
- args.unshift(gutil.colors[color].bold(label.toUpperCase() + ':'));
- gutil.log.apply(null, args);
- };
- }
- gutil.error = logger('red', 'error');
- gutil.warn = logger('yellow', 'warn');
- gutil.notice = logger('white', 'notice');
- /**
- * @param err
- */
- function handleError (err) {
- gutil.error(err.stack);
- }
- /*****************************
- TASKS
- ******************************/
- /**
- * clean
- */
- gulp.task('clean', function (cb) {
- del(['./dist/*'])
- .then(function () {
- cb();
- })
- .catch(handleError);
- });
- /**
- * images
- */
- gulp.task('images', function () {
- if (process.arch !== 'arm') {
- return gulp.src(assets.images.watch)
- .pipe(imagemin({
- optimizationLevel: 7
- }))
- .pipe(gulp.dest(assets.images.dest))
- .on('error', handleError);
- } else {
- return gulp.src(assets.images.watch)
- .pipe(gulp.dest(assets.images.dest))
- .on('error', handleError);
- }
- });
- /**
- * fonts
- */
- gulp.task('fonts', function () {
- return gulp.src(assets.fonts.watch)
- .pipe(gulp.dest(assets.fonts.dest))
- .on('error', handleError);
- });
- /**
- * scss
- */
- gulp.task('scss', function () {
- return gulp.src(assets.scss.src)
- .pipe(sass().on('error', sass.logError))
- .pipe(concat.header('@import url(\'https://fonts.googleapis.com/css?family=Open+Sans+Condensed:300,700\');@import url(\'https://fonts.googleapis.com/css?family=Roboto:100,200,300,400,500,600,700|Roboto+Condensed:300,400,700\');'))
- .pipe(gulp.dest(path.resolve(assets.scss.dest)));
- });
- /**
- * js
- */
- gulp.task('js', function () {
- return gulp.src(assets.js.src)
- .pipe(webpack(require('./webpack.config.js')))
- .pipe(gulp.dest(assets.js.dest))
- .on('error', handleError);
- });
- /**
- * views
- */
- gulp.task('views', function () {
- return gulp.src(assets.views.src)
- .pipe(ejs({
- version: PACKAGE.version
- }, {}, {
- ext: '.html'
- }))
- .on('error', handleError)
- .pipe(gulp.dest(assets.views.dest));
- });
- /**
- * bump
- */
- gulp.task('bump', function () {
- gulp.src('./package.json')
- .pipe(bump({type: 'version'}))
- .pipe(gulp.dest('./'));
- });
- /**
- * build
- */
- gulp.task('build', function (cb) {
- runSequence('clean', ['images', 'fonts', 'scss', 'js', 'views'], cb);
- });
- /**
- * default
- */
- gulp.task('default', ['build'], function () {
- gulp.watch(assets.scss.watch, ['scss']);
- gulp.watch(assets.images.watch, ['images']);
- gulp.watch(assets.fonts.watch, ['fonts']);
- gulp.watch(assets.js.watch, ['js']);
- gulp.watch(assets.views.watch, ['views']);
- gulp.watch('./webpack.config.js', ['js']);
- });
|