gulpfile.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. 'use strict';
  2. var gulp = require('gulp');
  3. var util = require('gulp-util');
  4. var sass = require('gulp-sass');
  5. var watch = require('gulp-watch');
  6. var autoprefixer = require('gulp-autoprefixer');
  7. var jsmin = require('gulp-jsmin');
  8. var cssmin = require('gulp-cssmin');
  9. var rename = require('gulp-rename');
  10. var mainBowerFiles = require('main-bower-files');
  11. var jsonToSass = require('gulp-json-to-sass');
  12. // var fs = require('fs');
  13. var json2js = require('gulp-json2js');
  14. var data = require('gulp-data');
  15. var concat = require('gulp-concat');
  16. // var shared_variables = JSON.parse(fs.readFileSync('./assets/json/shared_variables.json'));
  17. function handleError(err) {
  18. console.log(err.toString());
  19. }
  20. var config = {
  21. assetsDir : './assets',
  22. production: !!util.env.production
  23. }
  24. gulp.task('variables2js', function() {
  25. gulp.src('./assets/scripts/shared_variables_model.js')
  26. .pipe(rename('shared_variables.js'))
  27. .pipe(data(function(file) {
  28. delete require.cache['./assets/json/shared_variables.json'];
  29. return require('./assets/json/shared_variables.json');
  30. }))
  31. .pipe(json2js())
  32. .pipe(gulp.dest('./assets/scripts/'));
  33. });
  34. gulp.task('scripts', function () {
  35. gulp.src(['./assets/scripts/shared_variables.js','./assets/scripts/main.js'])
  36. .pipe(concat('main.js'))
  37. .pipe(config.production ? jsmin() : util.noop())
  38. .pipe(rename({suffix: '.min'}))
  39. .pipe(gulp.dest('./assets/dist/scripts/'));
  40. });
  41. // gulp.task('scripts', function() {
  42. // return gulp.src(['./lib/file3.js', './lib/file1.js', './lib/file2.js'])
  43. // .pipe(concat('all.js'))
  44. // .pipe(gulp.dest('./dist/'));
  45. // });
  46. gulp.task('variables2sass', function () {
  47. gulp.src('./assets/json/shared_variables.json')
  48. .pipe(jsonToSass({
  49. jsonPath: './assets/json/shared_variables.json',
  50. scssPath: './assets/styles/base/_shared_variables.scss'
  51. }));
  52. });
  53. gulp.task('styles', function () {
  54. gulp.src('./assets/styles/app.scss')
  55. .pipe(sass().on('error', sass.logError))
  56. .pipe(autoprefixer({
  57. browsers: ['last 2 versions'],
  58. cascade: false
  59. })).on('error', handleError)
  60. .pipe(config.production ? cssmin() : util.noop())
  61. .pipe(rename({suffix: '.min'}))
  62. .pipe(gulp.dest('./assets/dist/styles/'));
  63. });
  64. gulp.task('bower', function() {
  65. gulp.src(mainBowerFiles({
  66. "overrides":{
  67. "history.js":{
  68. "main":"./scripts/bundled/html4+html5/jquery.history.js"
  69. },
  70. "jquery":{
  71. "ignore":true
  72. },
  73. "overlayScrollbars":{
  74. "main":[
  75. "./js/jquery.overlayScrollbars.min.js",
  76. "./css/OverlayScrollbars.min.css"
  77. ]
  78. }
  79. }
  80. }))
  81. .pipe(gulp.dest('./assets/dist/bower/'));
  82. });
  83. // default gulp task
  84. gulp.task('default', ['bower', 'variables2js', 'scripts', 'variables2sass', 'styles'], function() {
  85. gulp.watch('./assets/json/*.json', ['variables2js', 'variables2sass', 'styles', 'scripts']);
  86. gulp.watch('./assets/styles/*.scss', ['styles']);
  87. gulp.watch('./assets/styles/base/*.scss', ['styles']);
  88. gulp.watch('./assets/scripts/*.js', ['scripts']);
  89. });