Skip to content

Instantly share code, notes, and snippets.

@ivanlemeshev
Created August 27, 2015 12:12
Show Gist options
  • Save ivanlemeshev/a5dfb36c48eae1db98b5 to your computer and use it in GitHub Desktop.
Save ivanlemeshev/a5dfb36c48eae1db98b5 to your computer and use it in GitHub Desktop.
gulpfile.js
'use strict';
var gulp = require('gulp'),
wiredep = require('wiredep'),
concat = require('gulp-concat'),
csso = require('gulp-csso'),
uglify = require('gulp-uglify'),
ngAnnotate = require('gulp-ng-annotate'),
livereload = require('gulp-livereload'),
jscs = require('gulp-jscs'),
jshint = require('gulp-jshint'),
eslint = require('gulp-eslint');
var src = {
bower: './bower_components/',
dev: './src/',
dist: './dist/',
scripts: 'scripts',
styles: 'styles',
fonsts: 'fonts',
assets: 'assets'
};
var appJsFiles = [
src.dev + 'app/index.js',
src.dev + 'app/**/*.module.js',
src.dev + 'components/**/*.module.js',
src.dev + 'app/**/*.js',
src.dev + 'components/**/*.js'
];
gulp.task('bower-js', function () {
return gulp.src(wiredep().js)
.pipe(concat('vendor.min.js'))
.pipe(gulp.dest(src.dist + src.scripts))
.pipe(livereload());
});
gulp.task('bower-css', function () {
return gulp.src(wiredep().css)
.pipe(concat('vendor.min.css'))
.pipe(gulp.dest(src.dist + src.styles))
.pipe(livereload());
});
gulp.task('bower-fonts', function () {
return gulp.src(src.bower + 'font-awesome/fonts/*.*')
.pipe(gulp.dest(src.dist + src.fonsts))
.pipe(livereload());
});
gulp.task('app-js', function () {
return gulp.src(appJsFiles)
.pipe(ngAnnotate())
.pipe(concat('app.min.js'))
.pipe(gulp.dest(src.dist + src.scripts))
.pipe(livereload());
});
gulp.task('app-css', function () {
return gulp.src([
src.dev + 'app/index.css',
src.dev + 'app/**/*.css',
src.dev + 'components/**/*.css'
])
.pipe(concat('app.min.css'))
.pipe(gulp.dest(src.dist + src.styles))
.pipe(livereload());
});
gulp.task('app-html', function () {
return gulp.src(src.dev + '**/**/*.html')
.pipe(gulp.dest(src.dist))
.pipe(livereload());
});
gulp.task('app-files', function () {
return gulp.src(src.dev + '*.*')
.pipe(gulp.dest(src.dist))
.pipe(livereload());
});
gulp.task('app-assets', function () {
return gulp.src(src.dev + 'assets/**/*')
.pipe(gulp.dest(src.dist + src.assets))
.pipe(livereload());
});
gulp.task('watch', ['default'], function () {
livereload.listen();
gulp.watch(src.dev + 'app/index.js', ['app-js']);
gulp.watch(src.dev + 'app/**/*.js', ['app-js']);
gulp.watch(src.dev + 'components/**/*.js', ['app-js']);
gulp.watch(src.dev + 'app/index.css', ['app-css']);
gulp.watch(src.dev + 'app/**/*.css', ['app-css']);
gulp.watch(src.dev + 'components/**/*.css', ['app-css']);
gulp.watch(src.dev + 'app/**/*.html', ['app-html']);
gulp.watch(src.dev + 'components/**/*.html', ['app-html']);
gulp.watch(src.dev + '*.*', ['app-files']);
gulp.watch(src.dev + 'assets/**/*', ['app-assets']);
});
gulp.task('jscs', function () {
return gulp.src(appJsFiles)
.pipe(ngAnnotate())
.pipe(jscs());
});
gulp.task('jslint', function () {
return gulp.src(appJsFiles)
.pipe(ngAnnotate())
.pipe(jshint('.jshintrc'))
.pipe(jshint.reporter('jshint-stylish'));
});
gulp.task('eslint', function () {
return gulp.src(appJsFiles)
.pipe(ngAnnotate())
.pipe(eslint())
.pipe(eslint.format());
});
gulp.task('build', [
'bower-js',
'bower-css',
'bower-fonts',
'app-js',
'app-css',
'app-html',
'app-files',
'app-assets'
], function () {
gulp.src(src.dist + 'js/*.js')
.pipe(uglify())
.pipe(gulp.dest(src.dist + src.scripts));
gulp.src(src.dist + 'css/*.css')
.pipe(csso())
.pipe(gulp.dest(src.dist + src.styles));
});
gulp.task('default', [
'bower-js',
'bower-css',
'bower-fonts',
'app-js',
'app-css',
'app-html',
'app-files',
'app-assets'
]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment