otsdaq_utilities  v2_05_02_indev
gulpfile.js
1 var gulp = require('gulp'),
2 sass = require('gulp-sass'),
3 autoprefixer = require('gulp-autoprefixer'),
4 cssnano = require('gulp-cssnano'),
5 jshint = require('gulp-jshint'),
6 uglify = require('gulp-uglify'),
7 imagemin = require('gulp-imagemin'),
8 rename = require('gulp-rename'),
9 concat = require('gulp-concat'),
10 notify = require('gulp-notify'),
11 cache = require('gulp-cache'),
12 livereload = require('gulp-livereload'),
13 del = require('del');
14 include = require('gulp-include'),
15 sourcemaps = require('gulp-sourcemaps'),
16 babel = require('gulp-babel'),
17 plumber = require('gulp-plumber'),
18 gutil = require('gulp-util'),
19 insert = require('gulp-insert'),
20 fs = require('fs');
21 
22 var version_no = "4.5.3",
23 
24 version = "/* Tabulator v" + version_no + " (c) Oliver Folkerd */\n";
25 
26 var gulp_src = gulp.src;
27 gulp.src = function() {
28  return gulp_src.apply(gulp, arguments)
29  .pipe(plumber(function(error) {
30  // Output an error message
31  gutil.log(gutil.colors.red('Error (' + error.plugin + '): ' + error.message));
32  // emit the end event, to properly end the task
33  this.emit('end');
34  })
35  );
36 };
37 
38 //build css
39 gulp.task('styles', function() {
40  return gulp.src('src/scss/**/tabulator*.scss')
41  .pipe(sourcemaps.init())
42  .pipe(insert.prepend(version + "\n"))
43  .pipe(sass({outputStyle: 'expanded'}).on('error', sass.logError))
44  .pipe(autoprefixer('last 4 version'))
45  .pipe(gulp.dest('dist/css'))
46  .pipe(rename({suffix: '.min'}))
47  .pipe(cssnano({zindex: false}))
48  .pipe(insert.prepend(version))
49  .pipe(sourcemaps.write('.'))
50  .pipe(gulp.dest('dist/css'))
51  .on('end', function(){ gutil.log('Styles task complete'); })
52  });
53 
54 
55 //build tabulator
56 gulp.task('tabulator', function() {
57  //return gulp.src('src/js/**/*.js')
58  return gulp.src('src/js/core_modules.js')
59  .pipe(insert.prepend(version + "\n"))
60  //.pipe(sourcemaps.init())
61  .pipe(include())
62  //.pipe(jshint())
63  // .pipe(jshint.reporter('default'))
64  .pipe(babel({
65  //presets:['es2015']
66  compact: false,
67  presets: [["env",{
68  "targets": {
69  "browsers": ["last 4 versions"]
70  },
71  loose: true,
72  modules: false,
73  }, ], { }]
74  }))
75  .pipe(concat('tabulator.js'))
76  .pipe(gulp.dest('dist/js'))
77  .pipe(rename({suffix: '.min'}))
78  .pipe(uglify())
79  .pipe(insert.prepend(version))
80  // .pipe(sourcemaps.write('.'))
81  .pipe(gulp.dest('dist/js'))
82  //.pipe(notify({ message: 'Scripts task complete' }));
83  .on('end', function(){ gutil.log('Tabulator Complete'); })
84  //.on("error", console.log)
85  });
86 
87 
88 //simplified core js
89 gulp.task('core', function() {
90  return gulp.src('src/js/core.js')
91  .pipe(insert.prepend(version + "\n"))
92  .pipe(include())
93  .pipe(babel({
94  presets: [["env", {
95  "targets": {
96  "browsers": ["last 4 versions"]
97  },
98  loose: true,
99  modules: false,
100  }]
101  ]
102  }))
103  .pipe(concat('tabulator_core.js'))
104  .pipe(gulp.dest('dist/js'))
105  .pipe(rename({suffix: '.min'}))
106  .pipe(uglify())
107  .pipe(insert.prepend(version))
108  .pipe(gulp.dest('dist/js'))
109  .on('end', function(){ gutil.log('Core complete'); })
110  });
111 
112 
113 
114 //make jquery wrapper
115 gulp.task('modules', function(){
116 
117  var path = __dirname + "/src/js/modules/";
118 
119  var files = fs.readdirSync(path);
120 
121  var core = ["layout.js", "localize.js", "comms.js"];
122 
123  files.forEach(function(file, index){
124 
125  if(!core.includes(file)){
126  return gulp.src('src/js/modules/' + file)
127  .pipe(insert.prepend(version + "\n"))
128  .pipe(include())
129  .pipe(babel({
130  presets: [["env", {
131  "targets": {
132  "browsers": ["last 4 versions"]
133  },
134  loose: true,
135  modules: false,
136  }]
137  ]
138  }))
139  .pipe(concat(file))
140  .pipe(gulp.dest('dist/js/modules/'))
141  .pipe(rename({suffix: '.min'}))
142  .pipe(uglify())
143  .pipe(insert.prepend(version))
144  .pipe(gulp.dest('dist/js/modules/'))
145  }
146  });
147 
148  });
149 
150 //make jquery wrapper
151 gulp.task('jquery', function(){
152  return gulp.src('src/js/jquery_wrapper.js')
153  .pipe(insert.prepend(version + "\n"))
154  .pipe(include())
155  .pipe(babel({
156  presets: [["env", {
157  "targets": {
158  "browsers": ["last 4 versions"]
159  },
160  loose: true,
161  modules: false,
162  }]
163  ]
164  }))
165  .pipe(concat('jquery_wrapper.js'))
166  .pipe(gulp.dest('dist/js'))
167  .pipe(rename({suffix: '.min'}))
168  .pipe(uglify())
169  .pipe(insert.prepend(version))
170  .pipe(gulp.dest('dist/js'))
171  .on('end', function(){ gutil.log('jQuery wrapper complete'); })
172 
173  });
174 
175 
176 gulp.task('scripts', function() {
177  gulp.start('tabulator');
178  gulp.start('core');
179  gulp.start('modules');
180  gulp.start('jquery');
181  });
182 
183 gulp.task('clean', function() {
184  return del(['dist/css', 'dist/js']);
185  });
186 
187 
188 gulp.task('default', ['clean'], function() {
189  gulp.start('styles', 'scripts');
190  });
191 
192 
193 gulp.task('watch', function() {
194 
195  // Watch .scss files
196  gulp.watch('src/scss/**/*.scss', ['styles']);
197 
198  // Watch .js files
199  gulp.watch('src/js/**/*.js', ['scripts']);
200 
201  });