generator-sublime
Version:
Yeoman generator for scaffolfding the standard configuration root files like .gitignore, .jshintrc, .jscsrc etc...
139 lines (124 loc) • 5.05 kB
JavaScript
;
var gulp = require('gulp');
var browserSync = require('browser-sync');
var runSequence = require('run-sequence');
var gutil = require('gulp-util');
var chalk = require('chalk');
var gmux = require('gulp-mux');
var exec = require('child_process').exec;
var constants = require('../common/constants')();
var helper = require('../common/helper');
var args = require('yargs').argv;
var _ = require('lodash');
var taskBrowsersyncstart = function(constants) {
var dest = constants.dist.distFolder;
dest = helper.isMobile(constants) ? dest + '/www' : dest;
var open = constants.serve.open;
var https = constants.serve.https || false;
if (!_.isUndefined(args.browser)) {
open = args.browser;
}
if (!_.isUndefined(args.https)) {
https = args.https;
}
var bs = browserSync.create();
//var version = helper.readJsonFile('./package.json').version;
//var target = constants.targetName;
//var releaseName = target + '-v' + version;
//var sourceMap = releaseName + constants.exorcist.mapExtension;
//var sourceMapDest = constants.exorcist.dest;
var config = {
files: [dest + '/index.html', dest + '/' + constants.script.dest + '/' + constants.bundleName, dest + '/' + constants.style.dest + '/' + constants.style.destName],
tunnel: constants.serve.localtunnel,
server: {
baseDir: constants.mode === 'prod' ? [dest, constants.exorcist.dest] : dest,
routes: {},
middleware: [
function(req, res, next) {
//console.log("Hi from middleware");
next();
}
]
},
host: constants.serve.host,
port: constants.serve.port,
https: https,
logLevel: 'info', // info, debug , silent
open: open,
browser: constants.serve.browser, //['google chrome'], // ['google chrome', 'firefox'],
notify: true,
logConnections: false,
ghostMode: constants.serve.ghostMode
};
//config.server.routes['/' + sourceMapDest + '/' + sourceMap] = sourceMapDest + '/' + sourceMap;
bs.watch(constants.style.watchFolder, {
ignoreInitial: true
}, function() {
gulp.start('style');
});
bs.watch(constants.html.src, {
ignoreInitial: true
}, function() {
gulp.start('html');
});
bs.watch(constants.images.src, {
ignoreInitial: true
}, function() {
gulp.start('image');
});
bs.init(config);
var platform = global.options.platform || constants.cordova.platform;
if (helper.isMobile(constants)) {
gutil.log('Launching ' + platform + ' emulator');
//exec('ionic emulate ' + platform + ' --livereload', {
exec('ionic emulate ' + platform, {
cwd: constants.dist.distFolder,
maxBuffer: constants.maxBuffer
}, helper.execHandler);
}
};
var taskBrowsersync = function(constants) {
runSequence(
[constants.moduleManager === 'webpack' ? 'webpack:watch' : 'watchify', 'style', 'image', 'html', 'font', 'angular:i18n'],
'browsersyncstart'
);
};
gulp.task('browsersyncstart', false, function() {
var taskname = 'browsersyncstart';
gmux.targets.setClientFolder(constants.clientFolder);
if (global.options === null) {
global.options = gmux.targets.askForSingleTarget(taskname);
}
return gmux.createAndRunTasks(gulp, taskBrowsersyncstart, taskname, global.options.target, global.options.mode, constants);
});
gulp.task('browsersync', 'Launches a browserSync server.', function() {
var taskname = 'browsersync';
gmux.targets.setClientFolder(constants.clientFolder);
if (global.options === null) {
global.options = gmux.targets.askForSingleTarget(taskname);
}
return gmux.createAndRunTasks(gulp, taskBrowsersync, taskname, global.options.target, global.options.mode, constants);
});
var taskCordovaRun = function(constants) {
if (!helper.isMobile(constants)) {
gutil.log(chalk.red('Error: ' + chalk.bold(constants.targetName) + ' is not a cordova application'));
return;
}
var platform = global.options.platform || constants.cordova.platform;
gutil.log('ionic run ' + platform);
exec('ionic run ' + platform, {
cwd: constants.dist.distFolder,
maxBuffer: constants.maxBuffer
}, helper.execHandler);
};
gulp.task('cordova:run', 'Execute cordova run', function() {
var taskname = 'cordova:run';
gmux.targets.setClientFolder(constants.clientFolder);
if (global.options === null) {
global.options = gmux.targets.askForSingleTarget(taskname);
}
return gmux.createAndRunTasks(gulp, taskCordovaRun, taskname, global.options.target, global.options.mode, constants);
});
gulp.task('bowersync', false, function() {
gutil.log(chalk.red('\n', 'Task \'bowersync\' is not in your gulpfile.'), '\n', chalk.red('Did you mean this?'), '\n', chalk.yellow('gulp browsersync'), '\n');
});