mirror of
https://github.com/koodiklinikka/gulp-project-template.git
synced 2026-01-26 03:34:07 +00:00
107 lines
2.6 KiB
JavaScript
107 lines
2.6 KiB
JavaScript
'use strict';
|
|
|
|
var browserify = require('browserify');
|
|
var ecstatic = require('ecstatic');
|
|
var gulp = require('gulp');
|
|
var gutil = require('gulp-util');
|
|
var livereload = require('gulp-livereload');
|
|
var path = require('path');
|
|
var source = require('vinyl-source-stream');
|
|
var watchify = require('watchify');
|
|
|
|
var config = {
|
|
scripts: {
|
|
source: './src/js/main.js',
|
|
extensions: ['.jsx'],
|
|
destination: './public/js/',
|
|
filename: 'bundle.js'
|
|
},
|
|
templates: {
|
|
source: './src/**/*.html',
|
|
watch: './src/**/*.html',
|
|
destination: './public/'
|
|
},
|
|
styles: {
|
|
source: './src/**/style.css',
|
|
watch: './src/**/*.css',
|
|
destination: './public/css/'
|
|
},
|
|
assets: {
|
|
source: './src/assets/**/*.*',
|
|
watch: './src/assets/**/*.*',
|
|
destination: './public/'
|
|
}
|
|
};
|
|
|
|
function handleError(err) {
|
|
gutil.log(err);
|
|
gutil.beep();
|
|
return this.emit('end');
|
|
}
|
|
|
|
gulp.task('scripts', function() {
|
|
var build, bundle;
|
|
bundle = browserify({
|
|
entries: [config.scripts.source],
|
|
extensions: config.scripts.extensions,
|
|
debug: false
|
|
});
|
|
build = bundle.bundle().on('error', handleError).pipe(source(config.scripts.filename));
|
|
return build.pipe(gulp.dest(config.scripts.destination));
|
|
});
|
|
|
|
gulp.task('templates', function() {
|
|
return gulp.src(config.templates.source)
|
|
.pipe(gulp.dest(config.templates.destination))
|
|
.on('error', handleError)
|
|
.pipe(livereload({auto: false}));
|
|
});
|
|
|
|
gulp.task('styles', function() {
|
|
return gulp.src(config.styles.source)
|
|
.pipe(gulp.dest(config.styles.destination))
|
|
.pipe(livereload({auto: false}));
|
|
});
|
|
|
|
gulp.task('assets', function() {
|
|
return gulp.src(config.assets.source)
|
|
.pipe(gulp.dest(config.assets.destination));
|
|
});
|
|
|
|
gulp.task('server', function() {
|
|
return require('http').createServer(ecstatic({
|
|
root: path.join(__dirname, 'public')
|
|
})).listen(9001);
|
|
});
|
|
|
|
gulp.task('watch', function() {
|
|
livereload.listen();
|
|
|
|
gulp.watch(config.templates.watch, ['templates']);
|
|
gulp.watch(config.styles.watch, ['styles']);
|
|
gulp.watch(config.assets.watch, ['assets']);
|
|
|
|
var bundle = watchify(browserify({
|
|
entries: [config.scripts.source],
|
|
extensions: config.scripts.extensions,
|
|
debug: true,
|
|
cache: {},
|
|
packageCache: {},
|
|
fullPaths: true
|
|
}));
|
|
|
|
return bundle.on('update', function() {
|
|
return bundle.bundle()
|
|
.on('error', handleError)
|
|
.pipe(source(config.scripts.filename))
|
|
.pipe(gulp.dest(config.scripts.destination))
|
|
.pipe(livereload());
|
|
}).emit('update');
|
|
});
|
|
|
|
gulp.task('no-js', ['templates', 'styles', 'assets']);
|
|
|
|
gulp.task('build', ['scripts', 'no-js']);
|
|
|
|
gulp.task('default', ['watch', 'no-js', 'server']);
|