generator-simple-aspnet
Version:
a simple and opinionated aspnet5 yeoman generator
109 lines (93 loc) • 2.5 kB
JavaScript
/*jslint node: true */
var del = require('del');
var runSequence = require('run-sequence');
var gulp = require('gulp');
var p = require('gulp-load-plugins')();
var less = p.less;
var autoprefixer = p.autoprefixer;
var rename = p.rename;
var uglify = p.uglify;
var concat = p.concat;
var aspnet = p.aspnetK;
var browserSync = require('browser-sync');
var reload = browserSync.reload;
var opts = {
buildFolder: './wwwroot/',
client: {
less: {
main: './client/less/_.less',
files: './client/less/**/*.less',
destinationFilename: 'app.css'
},
js: {
files: './client/js/**/*.js',
destinationFilename: 'app.js'
},
image: {
files: [
'./client/images/**/*.png',
'./client/images/**/*.jpg'
]
}
},
server: {
cs: {
files: './server/**/*.cs'
},
cshtml: {
files: './server/Views/**/*.cshtml'
},
aspnet: {
kCommand: 'kestrel',
cwd: './server'
}
}
};
gulp.task('clean', function(cb) {
del([opts.buildFolder], cb);
});
gulp.task('js', function() {
gulp.src(opts.client.js.files)
.pipe(uglify())
.pipe(concat(opts.client.js.destinationFilename))
.pipe(gulp.dest(opts.buildFolder))
.pipe(reload({
stream: true
}));
});
gulp.task('aspnet', ['build-client'], aspnet(opts.server.aspnet));
gulp.task('less', function() {
gulp.src(opts.client.less.main)
.pipe(less())
.pipe(autoprefixer('last 2 versions', '> 5%'))
.pipe(rename(opts.client.less.destinationFilename))
.pipe(gulp.dest(opts.buildFolder))
.pipe(reload({
stream: true
}));
});
gulp.task('images', function() {
gulp.src(opts.client.image.files)
.pipe(gulp.dest(opts.buildFolder));
});
gulp.task('browser-sync', function() {
browserSync({
proxy: "localhost:5004",
});
});
gulp.task('bs-reload', function() {
browserSync.reload();
});
gulp.task('server-reload', function(cb) {
runSequence('aspnet', 'bs-reload', cb);
});
gulp.task('build-client', function(cb) {
runSequence('clean', ['less', 'js', 'images'], cb);
});
gulp.task('default', function(cb) {
gulp.watch(opts.server.cs.files, ['server-reload']);
gulp.watch(opts.server.cshtml.files, ['bs-reload']);
gulp.watch(opts.client.less.files, ['less']);
gulp.watch(opts.client.js.files, ['js']);
runSequence('build-client', ['aspnet', 'browser-sync'], cb);
});