2015-10-17 14:12:04 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var watchify = require('watchify');
|
|
|
|
var browserify = require('browserify');
|
|
|
|
var tsify = require('tsify');
|
|
|
|
var gulp = require('gulp');
|
|
|
|
var source = require('vinyl-source-stream');
|
|
|
|
var buffer = require('vinyl-buffer');
|
|
|
|
var gutil = require('gulp-util');
|
|
|
|
var sourcemaps = require('gulp-sourcemaps');
|
|
|
|
var assign = require('lodash.assign');
|
2015-09-26 14:02:03 +02:00
|
|
|
var browserSync = require('browser-sync').create();
|
2015-10-18 20:05:30 +02:00
|
|
|
var del = require('del');
|
2015-09-26 14:02:03 +02:00
|
|
|
|
2015-10-17 14:12:04 +02:00
|
|
|
// add custom browserify options here
|
|
|
|
var customOpts = {
|
|
|
|
entries: ['./src/index.ts'],
|
|
|
|
debug: true
|
|
|
|
};
|
|
|
|
var opts = assign({}, watchify.args, customOpts);
|
|
|
|
var b = watchify(browserify(opts));
|
|
|
|
|
|
|
|
// add transformations here
|
|
|
|
// i.e. b.transform(coffeeify);
|
|
|
|
|
2015-10-18 20:05:30 +02:00
|
|
|
gulp.task('typescript', bundle); // so you can run `gulp js` to build the file
|
2015-10-17 14:12:04 +02:00
|
|
|
b.on('update', bundle); // on any dep update, runs the bundler
|
|
|
|
b.on('log', gutil.log); // output build logs to terminal
|
|
|
|
|
|
|
|
function bundle() {
|
|
|
|
return b
|
|
|
|
.plugin('tsify', { noImplicitAny: true })
|
|
|
|
.bundle()
|
|
|
|
// log errors if they happen
|
|
|
|
.on('error', gutil.log.bind(gutil, 'Browserify Error'))
|
|
|
|
.pipe(source('bundle.js'))
|
|
|
|
// optional, remove if you don't need to buffer file contents
|
|
|
|
.pipe(buffer())
|
|
|
|
// optional, remove if you dont want sourcemaps
|
|
|
|
.pipe(sourcemaps.init({loadMaps: true})) // loads map from browserify file
|
|
|
|
// Add transformation tasks to the pipeline here.
|
|
|
|
.pipe(sourcemaps.write('./')) // writes .map file
|
2015-10-18 20:05:30 +02:00
|
|
|
.pipe(gulp.dest('./dist/scripts'));
|
2015-10-17 14:12:04 +02:00
|
|
|
}
|
|
|
|
|
2015-10-18 20:05:30 +02:00
|
|
|
gulp.task('dist', ['dist-node-modules'], function () {
|
|
|
|
return gulp.src([
|
|
|
|
'src/**/*.html',
|
|
|
|
'src/**/*.css',
|
|
|
|
'src/**/*.js'
|
|
|
|
], {base: 'src'})
|
|
|
|
.pipe(gulp.dest('dist'));
|
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task('dist-node-modules', function () {
|
|
|
|
return gulp.src([
|
|
|
|
'node_modules/bootstrap/**/*'
|
|
|
|
], {base: 'node_modules'})
|
|
|
|
.pipe(gulp.dest('dist/vendor'));
|
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task('clean', function () {
|
|
|
|
return del('dist');
|
|
|
|
});
|
|
|
|
|
2015-09-26 14:02:03 +02:00
|
|
|
// use default task to launch Browsersync and watch JS files
|
2015-10-18 20:05:30 +02:00
|
|
|
gulp.task('serve', ['typescript', 'dist'], function () {
|
2015-09-26 14:02:03 +02:00
|
|
|
|
|
|
|
// Serve files from the root of this project
|
|
|
|
browserSync.init({
|
|
|
|
server: {
|
2015-10-18 20:05:30 +02:00
|
|
|
baseDir: "./dist",
|
|
|
|
index: "index.html"
|
2015-09-26 14:02:03 +02:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// add browserSync.reload to the tasks array to make
|
|
|
|
// all browsers reload after tasks are complete.
|
2015-10-17 14:12:04 +02:00
|
|
|
gulp.watch([
|
|
|
|
"dist/bundle.js",
|
2015-10-18 20:05:30 +02:00
|
|
|
"src/**/*.html",
|
|
|
|
"src/**/*.js",
|
|
|
|
"src/**/*.css",
|
|
|
|
])
|
2015-10-17 14:12:04 +02:00
|
|
|
.on('change', browserSync.reload);
|
2015-09-26 14:02:03 +02:00
|
|
|
});
|