UNPKG

black-cat

Version:

Um framework resposivo, com uma coleção de componentes flat feitos com HTML, CSS, Javascript.

355 lines (318 loc) 11.3 kB
var gulp = require('gulp'), rename = require("gulp-rename"), dest = require('gulp-dest'), runSequence = require('run-sequence'), zip = require('gulp-zip'), del = require('del'), concatFile = require('gulp-concat'), express = require('express'), browserSync = require('browser-sync').create(); inquirer = require("inquirer"), gulpif = require('gulp-if'), mergeTask = require('merge-stream'), notify = require('gulp-notify'), notifier = require('node-notifier'), map = require('map-stream'), cache = require('gulp-cache'), sourcemaps = require('gulp-sourcemaps'), autoprefixer = require('autoprefixer'), htmlmin = require('gulp-htmlmin'), sass = require('gulp-ruby-sass'), cssnano = require('gulp-cssnano'), mergerules = require('postcss-merge-rules'), postcss = require('gulp-postcss'), jsnamo = require('gulp-uglify'), jshint = require('gulp-jshint'), imagemin = require('gulp-imagemin'), rsync = require('rsyncwrapper'), destinoProducao = 'raiz', destinoHomologacao = 'raiz/homologacao', usuario = 'usuarioteste', dominio = 'teste.com.br'; gulp.task('criarServidor', ['copiarJquery'], function () { var escolha, prompts = [ { type: 'list', name: 'tiposervidor', message: "Qual tipo de serviço você quer usar?", choices: ['Servidor HTTP', 'Servidor Proxy'], filter: function (str){ if(str == 'Servidor HTTP'){ return 1; } else { return 2; } } }]; inquirer.prompt(prompts, function (answers){ var retorno = answers['tiposervidor']; if (retorno == 1) { escolha = 'HTTP'; browserSync.init({ logPrefix: "BlackCat", minify: false, port: 4000, ui: { port: 4001 }, server: { baseDir: "./", directory: false, index: "server/serverpage.html" } }); } else { escolha = 'Proxy'; browserSync.init({ logPrefix: 'BlackCat', proxy: '127.0.0.1:8888', minify: false, port: 4000, ui: { port:4001 } }); } notifier.notify({ title: 'BlackCat - Notificação', message: 'Servidor ' + escolha + ' pronto para uso', icon: 'notifyicon.png', sound: true, wait: true }); console.log('Iniciando servidor ' + escolha + '.'); }); gulp.watch('http/*.html').on('change', browserSync.reload); gulp.watch('http/**/*.html').on('change', browserSync.reload); gulp.watch('http/*.php').on('change', browserSync.reload); gulp.watch('http/**/*.php').on('change', browserSync.reload); gulp.watch('http/assets/css/main.css').on('change', browserSync.reload); gulp.watch('http/assets/js/main.js').on('change', browserSync.reload); gulp.watch('src/css/*.css', ['css-watch']); gulp.watch('src/sass/*.scss', ['sass-watch']); gulp.watch('src/js/*.js', ['js-watch']); }); gulp.task('sass-watch', ['sass-reload'], browserSync.reload); gulp.task('sass-reload', function(callback) { runSequence('compilaSass', 'concatenaCss', callback); }); gulp.task('css-watch', ['concatenaCss'], browserSync.reload); gulp.task('js-watch', ['verificarErroJs', 'concatenaJs'], browserSync.reload); gulp.task('minificaHtml', function() { return gulp.src('http/*.html', {base: "."}) .pipe(htmlmin({collapseWhitespace: true})) .pipe(gulp.dest('./')) .pipe(notify({ title: 'BlackCat - Notificação', message: 'Arquivos .html minificados', icon: 'notifyicon.png', sound: true })); }); gulp.task('compilaSass', function() { return sass('src/sass/style.scss', { noCache : true, precision : 4, unixNewlines : true }) .on('error', sass.logError) .pipe(postcss([ autoprefixer({ browsers: ['last 2 versions']})])) .pipe(dest('src/css/', { basename: 'stylesass' })) .pipe(gulp.dest('./')) .pipe(notify({ title: 'BlackCat - Notificação', message: 'Arquivo style.scss compilado com êxito.', icon: 'notifyicon.png', sound: true })); }); gulp.task('concatenaCss', function () { return gulp.src('src/css/*.css') .pipe(concatFile("main.css")) .pipe(gulp.dest('http/assets/css/')) .pipe(notify({ title: 'BlackCat - Notificação', message: 'Arquivos .css concatenados com êxito.', icon: 'notifyicon.png', sound: true })); }); gulp.task('mrsCss', function() { var original = gulp.src('http/assets/css/main.css'), nameMap = 'main.min.css'; function renomeia(Original) { var varMinify = Original function funcMinify(varMinify) { return varMinify .pipe(postcss([autoprefixer, mergerules])) .pipe(cssnano()) .pipe(dest('http/assets/css/', { basename : 'min' })); } return funcMinify(varMinify) .pipe(rename("http/assets/css/main.min.css")); } return renomeia(original) .pipe(sourcemaps.init()) .pipe(sourcemaps.write('./')) .pipe(gulp.dest('./')) .pipe(notify({ title: 'BlackCat - Notificação', message: 'Arquivo main.css minificado e com sourcemap gerado.', icon: 'notifyicon.png', sound: true })); }); gulp.task('concatenaJs', function () { return gulp.src(['src/js/main.js', 'src/js/style.js']) .pipe(concatFile("main.js")) .pipe(gulp.dest('http/assets/js/')) .pipe(notify({ title: 'BlackCat - Notificação', message: 'main.js e style.js foram concatenados com êxito.', icon: 'notifyicon.png', sound: true })); }); gulp.task('minificaJs', function () { var originalmain = gulp.src('http/assets/js/main.js'), originalplugins = gulp.src('src/js/plugins.js'), contador = 0; notifier.notify({ title: 'BlackCat - Notificação', message: 'Iníciando processo de minificação do main.js e plugins.js.', icon: 'notifyicon.png', sound: true, wait: true }); while(contador < 2){ if(contador === 0){ contador++; function fcRenomeiaM(originalM) { function fcMinifyM(varMinifyM) { return varMinifyM .pipe(jsnamo({preserveComments: 'all'})) .pipe(dest('http/assets/css/', { basename : 'mainmin' })); } return fcMinifyM(originalM) .pipe(rename("http/assets/js/main.min.js")); } var retornoMain = fcRenomeiaM(originalmain) .pipe(gulp.dest('./')); }else if(contador == 1){ contador++; function fcRenomeiaP(originalP) { function fcMinifyP(varMinifyP) { return varMinifyP .pipe(gulp.dest('http/assets/js/')) .pipe(jsnamo({preserveComments: 'all'})) .pipe(dest('http/assets/js/', { basename : 'pluginsmin' })); } return fcMinifyP(originalP) .pipe(rename("http/assets/js/plugins.min.js")); } var retornoPlugins = fcRenomeiaP(originalplugins) .pipe(gulp.dest('./')); } } notifier.notify({ title: 'BlackCat - Notificação', message: 'Os arquivos main.js e plugins.js foram minificados com êxito.', icon: 'notifyicon.png', sound: true, wait: true }); return mergeTask(retornoMain, retornoPlugins); }); gulp.task('verificarErroJs', function() { var jshintReporter = map(function (file, cb) { if (!file.jshint.success) { notifier.notify({ title: 'BlackCat - Notificação', message: 'Arquivo style.js possue erros, verificar apontamentos no terminal.', icon: 'notifyicon.png', sound: true }); }else if(file.jshint.success) { notifier.notify({ title: 'BlackCat - Notificação', message: 'Arquivo style.js não possue erros.', icon: 'notifyicon.png', sound: true }); } cb(null, file); }); return gulp.src('src/js/style.js') .pipe(jshint()) .pipe(jshintReporter) .pipe(jshint.reporter('jshint-stylish')); }); gulp.task('copiarJquery', function () { return gulp.src(['bower_components/jquery/dist/jquery.js', 'bower_components/jquery/dist/jquery.min.js', 'bower_components/jquery/dist/jquery.min.map']) .pipe(gulp.dest('http/assets/js/')) .pipe(notify({ title: 'BlackCat - Notificação', message: 'Arquivos jquery.js copiados com êxito para a pasta js do porjeto.', icon: 'notifyicon.png', sound: true })); }); gulp.task('minificaImg', function(){ return gulp.src('http/assets/imgs/**/*') .pipe(cache(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true}))) .pipe(gulp.dest('http/assets/imgs')) .pipe(notify({ title: 'BlackCat - Notificação', message: 'Imagens minificadas com êxito.', icon: 'notifyicon.png', sound: true, wait: true })); }); gulp.task('deployProducao', function() { rsync({ src: './http/', dest: usuario + '@' + dominio + ':~/' + destinoProducao, recursive: true, exclude: ['.DS_Store'], onStdout: function( data ) { console.log(data.toString()); } },function (error,stdout,stderr,cmd) { if(error){ notifier.notify({ title: 'BlackCat - Notificação', message: 'Erro no deploy\n' + error.message, icon: 'notifyicon.png', sound: true }); console.log('Erro no deploy\n' + error.message); }else{ notifier.notify({ title: 'BlackCat - Notificação', message: 'Deploy efetuado com êxito.', icon: 'notifyicon.png', sound: true }); } } ); }); gulp.task('deployHomologacao', function() { rsync({ src: './http/', dest: usuario + '@' + dominio + ':~/' + destinoHomologacao, recursive: true, exclude: ['.DS_Store'], onStdout: function( data ) { console.log(data.toString()); } },function (error,stdout,stderr,cmd) { if(error){ notifier.notify({ title: 'BlackCat - Notificação', message: 'Erro no deploy\n' + error.message, icon: 'notifyicon.png', sound: true }); console.log('Erro no deploy\n' + error.message); }else{ notifier.notify({ title: 'BlackCat - Notificação', message: 'Deploy efetuado com êxito.', icon: 'notifyicon.png', sound: true }); } } ); });