blob: 9b3c1b7befffec3f3b08cbb4cb8275b52d048823 [file] [log] [blame]
Matteo Scandolob0238d32015-11-04 16:03:59 +01001var gulp = require('gulp');
2var uglify = require('gulp-uglify');
Matteo Scandolo45a5c562016-04-13 16:20:13 -07003var concat = require('gulp-concat');
Matteo Scandolob0238d32015-11-04 16:03:59 +01004var ngAnnotate = require('gulp-ng-annotate');
5var angularFilesort = require('gulp-angular-filesort');
Matteo Scandolo45a5c562016-04-13 16:20:13 -07006var gulpDocs = require('gulp-ngdocs');
Matteo Scandolo717352a2016-04-13 17:23:28 -07007var del = require('del');
Matteo Scandolo1dab3e02016-04-14 11:46:30 -07008var babel = require('gulp-babel');
9const sourcemaps = require('gulp-sourcemaps');
Matteo Scandolo5614b902016-04-14 15:34:12 -070010var browserSync = require('browser-sync').create();
Matteo Scandolob0238d32015-11-04 16:03:59 +010011
12module.exports = function(options){
Matteo Scandolo1dab3e02016-04-14 11:46:30 -070013
14 // transpile js with sourceMaps
15 gulp.task('babel', function(){
16 return gulp.src(options.xosHelperSource + '**/*.js')
17 .pipe(babel({
18 presets: ['es2015']
19 }))
20 .pipe(gulp.dest(options.xosHelperTmp));
21 });
22
23 gulp.task('babelDev', function(){
24 return gulp.src(options.xosHelperSource + '**/*.js')
25 .pipe(sourcemaps.init())
26 .pipe(babel({
27 presets: ['es2015']
28 }))
29 .pipe(sourcemaps.write('./maps'))
30 .pipe(gulp.dest(options.xosHelperTmp));
31 });
32
33 // build
34 gulp.task('helpers', ['babel'], function(){
35 return gulp.src([options.xosHelperTmp + '**/*.js'])
Matteo Scandolob0238d32015-11-04 16:03:59 +010036 .pipe(angularFilesort())
37 .pipe(concat('ngXosHelpers.js'))
38 .pipe(ngAnnotate())
39 .pipe(uglify())
40 .pipe(gulp.dest(options.ngXosVendor));
41 });
Matteo Scandolo45a5c562016-04-13 16:20:13 -070042
Matteo Scandolo1dab3e02016-04-14 11:46:30 -070043 // build Dev (no minify, sourcemaps)
44 gulp.task('helpersDev', ['babelDev'], function(){
45 return gulp.src([options.xosHelperTmp + '**/*.js'])
46 .pipe(angularFilesort())
47 .pipe(concat('ngXosHelpers.js'))
48 .pipe(ngAnnotate())
49 .pipe(gulp.dest(options.ngXosVendor));
50 });
51
Matteo Scandolo717352a2016-04-13 17:23:28 -070052 gulp.task('cleanDocs', function(){
Matteo Scandolo717352a2016-04-13 17:23:28 -070053 return del([options.docs + '**/*']);
54 });
55
Matteo Scandolo5614b902016-04-14 15:34:12 -070056 gulp.task('makeDocs', ['cleanDocs'], function(){
Matteo Scandolo717352a2016-04-13 17:23:28 -070057 var ngOptions = {
58 scripts: [
Matteo Scandolod702aff2016-04-22 10:53:49 -070059 'https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular.js',
60 'https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular-animate.js',
61 'https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular-cookies.min.js',
62 'https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.7/angular-resource.js',
Matteo Scandolo9a8f53c2016-04-22 09:56:48 -070063 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.11.2/lodash.js',
Matteo Scandolod702aff2016-04-22 10:53:49 -070064 `./${options.ngXosVendor}ngXosHelpers.js`
Matteo Scandolo5614b902016-04-14 15:34:12 -070065 ],
66 styles: [
Matteo Scandolod702aff2016-04-22 10:53:49 -070067 'https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.css',
Matteo Scandolo717352a2016-04-13 17:23:28 -070068 ],
Matteo Scandolo6a6586e2016-04-14 16:52:13 -070069 html5Mode: false,
Matteo Scandolo717352a2016-04-13 17:23:28 -070070 title: 'XOS Helpers documentation',
71 startPage: '/module',
72 }
73
74 return gulpDocs.sections({
75 module: {
76 glob: [
77 options.xosHelperSource + '*.js',
Matteo Scandolo5614b902016-04-14 15:34:12 -070078 options.xosHelperSource + 'services/*.js',
79 options.xosHelperSource + 'ui_components/**/*.js'
Matteo Scandolo717352a2016-04-13 17:23:28 -070080 ],
81 title: 'Module Documentation',
82 },
83 'rest-api': {
84 glob: [
85 options.xosHelperSource + 'services/rest/*.js'
86 ],
87 api: true,
88 title: 'API Documentation',
89 }
90 }).pipe(gulpDocs.process(ngOptions)).pipe(gulp.dest('./docs'));
Matteo Scandolo45a5c562016-04-13 16:20:13 -070091 });
Matteo Scandolo1dab3e02016-04-14 11:46:30 -070092
Matteo Scandolo5614b902016-04-14 15:34:12 -070093 gulp.task('serveDocs', function(){
94 browserSync.init({
95 server: {
96 baseDir: './docs',
97 routes: {
98 '/xos/core/xoslib/static/js/vendor': options.ngXosVendor
99 }
100 }
101 });
102 });
103
104 gulp.task('docs', ['makeDocs', 'serveDocs'], function(){
105
106 var files = [
107 options.xosHelperSource + '*.js',
108 options.xosHelperSource + 'services/*.js',
109 options.xosHelperSource + 'ui_components/**/*.js'
110 ];
111
112 gulp.watch(files, ['makeDocs']);
113
114 gulp.watch(files, function(){
Matteo Scandolo5614b902016-04-14 15:34:12 -0700115 browserSync.reload();
116 });
117 })
118
Matteo Scandolo1dab3e02016-04-14 11:46:30 -0700119 gulp.task('dev', function(){
120 gulp.watch(options.xosHelperSource + '**/*.js', ['helpersDev']);
121 });
Matteo Scandolob0238d32015-11-04 16:03:59 +0100122};