Advertisement
Guest User

Untitled

a guest
May 4th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.04 KB | None | 0 0
  1. var gulp = require('gulp');
  2. var sass = require('gulp-sass');
  3. var size = require('gulp-size'); //shows the size of the entire project or files
  4. var autoprefixer = require('gulp-autoprefixer');
  5. var imagemin = require('gulp-imagemin');
  6. var pngquant = require('imagemin-pngquant');
  7. var jade = require('gulp-jade');
  8. var base64 = require('gulp-base64');
  9. var concat = require('gulp-concat');
  10. var uglify = require('gulp-uglify');
  11.  
  12. //gulp stuff (no watch breaking on errors)
  13. var plumber = require('gulp-plumber');
  14.  
  15. // browserSync
  16. var browserSync = require('browser-sync');
  17. var reload = browserSync.reload;
  18.  
  19.  
  20. // deploy to FTP
  21. var gutil = require('gulp-util');
  22. var ftp = require( 'vinyl-ftp' );
  23.  
  24. // css
  25. gulp.task('css', function() {
  26. gulp.src('src/css/main.scss')
  27. .pipe(plumber())
  28. //.pipe(sass({outputStyle: ''})
  29. .pipe(sass({outputStyle: 'compressed'})
  30. .on('>>> SASS COMPILING ERROR: ', sass.logError))
  31. .pipe(base64({
  32. //baseDir: 'public',
  33. //extensions: ['svg', 'png', 'svg', /\.jpg#datauri$/i],
  34. //exclude: [/\.server\.(com|net)\/dynamic\//, '--live.jpg'],
  35. //maxImageSize: 8*1024, // bytes
  36. //debug: true
  37. }))
  38. .pipe(autoprefixer({
  39. browsers: ['> 0%'],
  40. cascade: false
  41. }))
  42. .pipe(size())
  43. .pipe(gulp.dest('www/css'));
  44. });
  45.  
  46. // js
  47. gulp.task('main_js', function() {
  48. gulp.src([
  49. 'bower_components/jQuery/dist/jquery.min.js',
  50. 'bower_components/webfontloader/webfontloader.js',
  51. 'bower_components/filterizr/src/jquery.filterizr.js',
  52. 'bower_components/slick-carousel/slick/slick.min.js',
  53. 'bower_components/lightbox2/src/js/lightbox.js',
  54. 'src/js/pace.min.js',
  55. 'src/js/main.js'])
  56. .pipe(plumber())
  57. .pipe(concat('main.js'))
  58. .pipe(uglify())
  59. .pipe(size())
  60. .pipe(gulp.dest('www/js'));
  61. });
  62.  
  63. // Jade
  64. gulp.task('jade', function(){
  65. gulp.src(['src/templates/**.jade'])
  66. .pipe(plumber())
  67. .pipe(jade({
  68. pretty: true
  69. }))
  70. .pipe(gulp.dest('www/'));
  71. });
  72.  
  73. // images
  74. gulp.task('compress_img', function() {
  75. gulp.src('src/img/**')
  76. .pipe(imagemin({
  77. progressive: true,
  78. optimizationLevel: 1,
  79. svgoPlugins: [
  80. {removeViewBox: false},
  81. {removeDoctype: true},
  82. {removeComments: true},
  83. {cleanupNumericValues:
  84. {floatPrecision: 2}
  85. },
  86. {convertColors: {
  87. names2hex: false,
  88. rgb2hex: false
  89. }
  90. }],
  91. use: [pngquant()]
  92. }
  93. ))
  94. .pipe(gulp.dest('www/img'))
  95. });
  96.  
  97. gulp.task('dev:watch', function () {
  98. gulp.watch('src/templates/**', ['jade']),
  99. gulp.watch('src/css/**', ['css']),
  100. gulp.watch('src/js/main.js', ['main_js']),
  101. gulp.watch('src/img/**',['compress_img']);
  102. });
  103.  
  104.  
  105. /* Reload task */
  106. gulp.task('bs-reload', function () {
  107. browserSync.reload();
  108. });
  109.  
  110. /* Prepare Browser-sync for localhost */
  111. gulp.task('browser-sync', function () {
  112. browserSync.init(['www/css/*.css', 'www/js/*.js'], {
  113. server: {
  114. baseDir: './www'
  115. }
  116. });
  117. });
  118.  
  119. gulp.task('serve', function () {
  120. browserSync.init({
  121. server: {
  122. baseDir: './www'
  123. }
  124. });
  125. });
  126.  
  127.  
  128. /* Compile the Site */
  129. gulp.task('compile', ['css', 'main_js', 'compress_img', 'jade']);
  130.  
  131.  
  132. /* Default Gulp Task */
  133. gulp.task('default', ['dev:watch', 'serve'], function () {
  134. gulp.watch(['www/**/*'], ['bs-reload']);
  135. });
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147. /****************************************************************************************************************************************************************************************************************************/
  148. /** FTP Configuration **/
  149. var user = process.env.FTP_USER;
  150. var password = process.env.FTP_PWD;
  151. var host = 'ftp.yourdomain.com';
  152. var port = 21;
  153. var localFilesGlob = ['./www/**/*'];
  154. var remoteFolder = '/tech-mex.io/';
  155.  
  156. // helper function to build an FTP connection based on our configuration
  157. function getFtpConnection() {
  158. return ftp.create({
  159. host: host,
  160. port: port,
  161. user: user,
  162. password: password,
  163. parallel: 5,
  164. log: gutil.log
  165. });
  166. }
  167.  
  168. /**
  169. * Deploy task.
  170. * Copies the new files to the server
  171. *
  172. * Usage: `FTP_USER=horch001 FTP_PWD=666rice gulp ftp-deploy`
  173. */
  174. gulp.task('ftp-deploy', function() {
  175.  
  176. var conn = getFtpConnection();
  177.  
  178. return gulp.src(localFilesGlob, { base: '.', buffer: false })
  179. .pipe( conn.newer( remoteFolder ) ) // only upload newer files
  180. .pipe( conn.dest( remoteFolder ) )
  181. ;
  182. });
  183.  
  184.  
  185. /**
  186. * Watch deploy task.
  187. * Watches the local copy for changes and copies the new files to the server whenever an update is detected
  188. *
  189. * Usage: `FTP_USER=someuser FTP_PWD=somepwd gulp ftp-deploy-watch`
  190. */
  191. gulp.task('ftp-deploy-watch', function() {
  192.  
  193. var conn = getFtpConnection();
  194.  
  195. gulp.watch(localFilesGlob)
  196. .on('change', function(event) {
  197. console.log('Changes detected! Uploading file "' + event.path + '", ' + event.type);
  198.  
  199. return gulp.src( [event.path], { base: '.', buffer: false } )
  200. .pipe( conn.newer( remoteFolder ) ) // only upload newer files
  201. .pipe( conn.dest( remoteFolder ) )
  202. ;
  203. });
  204. });
  205.  
  206. /****************************************************************************************************************************************************************************************************************************/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement