api-ui/gulpfile.js

141 lines
4.1 KiB
JavaScript

var gulp = require('gulp');
var gulpConcat = require('gulp-concat');
var gulpConnect = require('gulp-connect');
var gulpExec = require('gulp-exec');
var gulpGzip = require('gulp-gzip');
var gulpMap = require('gulp-sourcemaps');
var gulpRename = require('gulp-rename');
var gulpReplace = require('gulp-replace');
var gulpSass = require('gulp-sass')(require('sass'));
var gulpTar = require('gulp-tar');
var gulpUglify = require('gulp-uglify');
var fs = require('fs-extra');
var pkg = require('./package.json');
var DIST = 'dist/';
var VERSION_DIST = DIST+pkg.version+'/';
var CDN = 'cdn.rancher.io/api-ui';
gulp.task('clean', function() {
return fs.emptyDir('./tmp').then(() => fs.emptyDir('./dist'));
});
gulp.task('server:reload', function() {
return gulpConnect.reload();
});
gulp.task('templates', function() {
return gulp.src('templates/*.hbs', {read: false})
.pipe(gulpExec(file => `./node_modules/.bin/handlebars "${file.path}"`, {pipeStdout: true}))
.pipe(gulpRename(function(path) {
path.extname = '.hbs.js';
}))
.pipe(gulp.dest('./tmp/tpl'));
});
gulp.task('partials', function() {
return gulp.src('partials/*.hbs', {read: false})
.pipe(gulpExec(file => `./node_modules/.bin/handlebars --partial "${file.path}"`, {pipeStdout: true}))
.pipe(gulpRename(function(path) {
path.extname = '.hbs.js';
}))
.pipe(gulp.dest('./tmp/tpl'));
});
gulp.task('js', gulp.series('templates','partials', function() {
return gulp.src([
'node_modules/jquery/dist/jquery.js',
'vendor/jquery.scrollintoview.js',
'node_modules/bootstrap/dist/js/bootstrap.js',
'vendor/async.js',
'vendor/json2.js',
'vendor/polyfill.js',
'vendor/JSONFormatter.js',
'src/URLParse.js',
'src/Cookie.js',
'node_modules/handlebars/dist/handlebars.runtime.js',
'src/template.js',
'tmp/tpl/**',
'src/HTMLApi.js',
'src/Explorer.js',
'src/init.js',
])
.pipe(gulpMap.init())
.pipe(gulpConcat('ui.js',{newLine: ';\n'}))
.pipe(gulpMap.write('./'))
.pipe(gulp.dest(VERSION_DIST));
}));
gulp.task('minjs', gulp.series('js', function() {
return gulp.src([VERSION_DIST+'/ui.js'], {base: VERSION_DIST})
.pipe(gulpRename({suffix: '.min'}))
.pipe(gulpMap.init({loadMaps: true}))
.pipe(gulpUglify())
.pipe(gulpMap.write('./'))
.pipe(gulp.dest(VERSION_DIST));
}));
gulp.task('css', function() {
return gulp.src([
'./node_modules/bootstrap/dist/css/bootstrap.css',
'styles/main.scss',
'styles/explorer.scss'
])
.pipe(gulpReplace("/*# sourceMappingURL=bootstrap.css.map */",""))
.pipe(gulpConcat('ui.css'))
.pipe(gulpMap.init())
.pipe(gulpSass())
.pipe(gulpMap.write('./'))
.pipe(gulp.dest(VERSION_DIST))
});
gulp.task('mincss', gulp.series('css', function() {
return gulp.src([VERSION_DIST+'/ui.css'], {base: VERSION_DIST})
.pipe(gulpRename({suffix: '.min'}))
.pipe(gulpMap.init({loadMaps: true}))
.pipe(gulpMap.write('./'))
.pipe(gulp.dest(VERSION_DIST));
}));
gulp.task('bootstrap', function() {
return gulp.src(['node_modules/bootstrap/dist/**'])
.pipe(gulp.dest(VERSION_DIST));
});
gulp.task('livereload', function(cb) {
gulp.watch('./gulpfile.js', gulp.series('server:reload'));
gulp.watch('styles/**', gulp.series('css'));
gulp.watch('src/**', gulp.series('js'));
gulp.watch('templates/**', gulp.series('js'));
gulp.watch('partials/**', gulp.series('js'));
cb();
})
gulp.task('src', gulp.series('minjs','mincss','bootstrap'));
gulp.task('tarball', gulp.series('src', function() {
return gulp.src([VERSION_DIST+'/**'], {base: DIST})
.pipe(gulpTar(pkg.version+'.tar'))
.pipe(gulpGzip())
.pipe(gulp.dest(DIST));
}));
gulp.task('build', gulp.series('tarball'), () => {});
gulp.task('default', gulp.series('build'));
gulp.task('server', gulp.series('build', 'livereload', function() {
var cors = function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
next();
};
return gulpConnect.server({
root: [VERSION_DIST],
port: process.env.PORT || 3000,
middleware: function() {
return [cors];
},
});
}));