wifi-setup
Version:
WiFi AP setup, particularly useful for IoT devices
154 lines (129 loc) • 4.16 kB
JavaScript
;
var gulp = require('gulp');
var runSequence = require('run-sequence');
var typescript;
var sourcemaps;
var tsProject;
gulp.task('build:typescript', function () {
if (!typescript) {
typescript = require('gulp-typescript');
sourcemaps = require('gulp-sourcemaps');
}
if (!tsProject) {
tsProject = typescript.createProject('tsconfig.json');
}
var tsResult = gulp.src([
'src/**/*.ts',
'!src/**/tests/*.test.ts',
'!node_modules/**/*',
'typings/main/**/*.d.ts'
])
.pipe(sourcemaps.init())
.pipe(typescript(tsProject));
return tsResult.js
.pipe(sourcemaps.write())
.pipe(gulp.dest('build'));
});
var tsProjectTests;
gulp.task('build:typescript:tests', function () {
if (!typescript) {
typescript = require('gulp-typescript');
sourcemaps = require('gulp-sourcemaps');
}
if (!tsProjectTests) {
tsProjectTests = typescript.createProject('tsconfig-tests.json');
}
var tsResult = gulp.src([
'src/**/tests/*.test.ts',
'!node_modules/**/*',
'typings/main/**/*.d.ts'
])
.pipe(sourcemaps.init())
.pipe(typescript(tsProjectTests));
return tsResult.js
.pipe(sourcemaps.write())
.pipe(gulp.dest('build'));
});
gulp.task('build:tests', ['build:typescript:tests']);
gulp.task('build:dev', ['build:typescript', 'build:tests']);
var exec;
gulp.task('build:deploy', ['default'], function (callback) {
if (!exec) {
exec = require('child_process').exec;
}
var commands =
'cd ../; mkdir wifi-setup-deploy; ' +
'cd wifi-setup-deploy; ' +
'git clone ../wifi-setup; cd wifi-setup; ' +
'NODE_ENV="production" npm install --production; ' +
'cp -R ../../wifi-setup/build/ ./build;';
exec(commands, function (err, stdout) {
console.log(stdout);
callback(err);
});
});
var sass;
gulp.task('sass', function () {
if (!sass) {
sass = require('gulp-sass');
}
return gulp.src('src/**/*.scss')
.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
.pipe(gulp.dest('build'));
});
gulp.task('copy:html', function () {
return gulp.src('src/**/*.html')
.pipe(gulp.dest('build'));
});
gulp.task('copy:css', function () {
return gulp.src('src/**/*.css')
.pipe(gulp.dest('build'));
});
gulp.task('copy:fonts', function () {
return gulp.src(['src/**/*.eot', 'src/**/*.svg', 'src/**/*.ttf', 'src/**/*.woff', 'src/**/*.woff2'])
.pipe(gulp.dest('build'));
});
gulp.task('copy:fill', function () {
return gulp.src('src/**/*.fill')
.pipe(gulp.dest('build'));
});
gulp.task('copy:json', function () {
return gulp.src('src/**/*.json')
.pipe(gulp.dest('build'));
});
gulp.task('copy:bower', function () {
return gulp.src('src/modules/pages/static/resources/bower_components/**/**')
.pipe(gulp.dest('build/modules/pages/static/resources/bower_components'));
});
var mocha;
gulp.task('test', function () {
if (!mocha) {
mocha = require('gulp-mocha');
}
return gulp.src(['build/**/tests/*.test.js', 'build/modules/test/*.test.js'], {read: false})
.pipe(mocha({reporter: 'list'}));
});
var del;
gulp.task('clean', function () {
if (!del) {
del = require('del');
}
return del(['build']);
});
gulp.task('clean:deploy', function () {
if (!del) {
del = require('del');
}
return del(['../wifi-setup-deploy'], {force: true});
});
gulp.task('copy', ['copy:html', 'copy:css', 'copy:fonts', 'copy:fill', 'copy:bower']);
gulp.task('watch', function () {
gulp.watch(['src/**/*.ts'], ['build:typescript']);
gulp.watch(['src/**/*.scss', 'src/**/*.css'], ['sass']);
gulp.watch(['src/**/**'], ['copy']);
});
gulp.task('build', function (callback) {
runSequence('clean', ['build:typescript', 'sass', 'copy'], callback);
});
gulp.task('dev', ['build', 'watch']);
gulp.task('default', ['build']);