mirror of https://github.com/rancher/api-ui.git
141 lines
4.1 KiB
JavaScript
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];
|
|
},
|
|
});
|
|
}));
|
|
|