Skip to content

Instantly share code, notes, and snippets.

@Daniel1984
Last active August 29, 2015 14:06
Show Gist options
  • Save Daniel1984/0e98055d5d4065f7c9ca to your computer and use it in GitHub Desktop.
Save Daniel1984/0e98055d5d4065f7c9ca to your computer and use it in GitHub Desktop.
var gulp = require('gulp'),
plumber = require('gulp-plumber'),
browserify = require('gulp-browserify'),
concat = require('gulp-concat'),
gulpif = require('gulp-if'),
uglify = require('gulp-uglify'),
imagemin = require('gulp-imagemin'),
jshint = require('gulp-jshint'),
stylish = require('jshint-stylish'),
mocha = require('gulp-mocha'),
karma = require('gulp-karma'),
sequence = require('run-sequence'),
less = require('gulp-less'),
gutil = require('gulp-util'),
internal_ip = require('internal-ip'),
replace = require('gulp-replace');
var paths = {
dev: {
main_test_file: './spec/app_spec.js',
main_js_file: './assets/js/application.js',
main_css_file: './assets/css/index.less',
base_js_dir: './assets/js/**',
js: './assets/js/**/*.js',
css: './assets/css/**/*.less',
img: './assets/img/**',
test_js_files: './spec/js/**/*.js',
test_js_output: './spec',
fonts_dir: './assets/css/fonts/**'
},
prod: {
js: './www/js',
css: './www/css',
img: './www/img',
fonts_dir: './www/css/fonts'
}
};
var isProduction = gutil.env.type === "production";
var app_url = isProduction ? 'https://in.samesystem.com/mapi/v1/' : 'http://' + internal_ip() + ':3000/mapi/v1/';
gulp.task('js', function() {
gulp.src(paths.dev.main_js_file)
.pipe(plumber())
.pipe(browserify())
.pipe(concat('index.js'))
.pipe(gulpif(isProduction, uglify())) // only minify if production
.pipe(replace('<% same_system_app_url_to_insert %>', app_url))
.pipe(gulp.dest(paths.prod.js));
});
gulp.task('css', function() {
gulp.src(paths.dev.main_css_file)
.pipe(plumber())
.pipe(less({
compress: true
}))
.pipe(gulp.dest(paths.prod.css));
});
gulp.task('copy:fonts', function() {
gulp.src(paths.dev.fonts_dir)
.pipe(gulp.dest(paths.prod.fonts_dir));
});
gulp.task('img', function() {
gulp.src(paths.dev.img)
.pipe(plumber())
.pipe(imagemin({
// optimizationLevel: 1,
// progressive: true
}))
.pipe(gulp.dest(paths.prod.img));
});
gulp.task('lint', function() {
gulp.src(paths.dev.js)
.pipe(jshint())
.pipe(jshint.reporter(stylish));
});
gulp.task('test:prepare', function() {
gulp.src('./spec/application.js')
.pipe(plumber())
.pipe(browserify())
.pipe(concat('app_spec.js'))
.pipe(gulp.dest(paths.dev.test_js_output));
});
gulp.task('test', function() {
gulp.src(paths.dev.main_test_file)
.pipe(karma({
configFile: 'karma.conf.js',
action: 'run'
}));
});
gulp.task('watch', function() {
gulp.watch(paths.dev.base_js_dir, function() {
sequence(
'lint',
'js'//,
//'test:prepare'
)
});
gulp.watch(paths.dev.test_js_files, function() {
gulp.run('test:prepare');
});
gulp.watch(paths.dev.img, function() {
gulp.run('img');
});
gulp.watch(paths.dev.css, function() {
gulp.run('css');
})
});
gulp.task('build', ['js', 'css', 'img', 'copy:fonts']);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment