dat.gui/gulpfile.js

107 lines
2.3 KiB
JavaScript
Raw Normal View History

2014-09-08 01:31:51 +00:00
var gulp = require( 'gulp' ),
$ = require( 'gulp-load-plugins' )(),
nib = require( 'nib' ),
fs = require( 'fs' ),
marked = require( 'marked' ),
karma = require( 'karma' ),
browserSync = require( 'browser-sync' ),
reload = browserSync.reload;
2014-08-27 00:01:15 +00:00
2014-09-08 01:31:51 +00:00
gulp.task( 'default', ['docs', 'build'] )
2014-09-03 00:44:37 +00:00
2014-09-08 01:31:51 +00:00
gulp.task( 'watch', ['default'], function() {
2014-08-27 00:01:15 +00:00
2014-09-08 01:31:51 +00:00
karma.server.start( {
2014-09-08 01:38:29 +00:00
frameworks: [ 'jasmine' ],
2014-09-08 01:31:51 +00:00
files: [
'build/gui.js',
'tests/*.js'
]
} );
2014-09-02 16:00:08 +00:00
2014-09-08 01:31:51 +00:00
gulp.watch( ['elements/**/*.styl', 'elements/**/*.html', 'elements/**/*.js', 'gui.html'], ['build'] );
2014-09-08 01:31:51 +00:00
gulp.watch( ['README.md', 'docs/*'], ['docs'] );
2014-09-02 16:00:08 +00:00
2014-09-08 01:31:51 +00:00
} );
2014-08-27 00:01:15 +00:00
2014-09-08 01:31:51 +00:00
gulp.task( 'build', ['vulcanize'], function() {
2014-08-27 00:01:15 +00:00
2014-09-08 01:31:51 +00:00
return gulp.src( 'build/gui.html' )
.pipe( $.replace( /\\/g, '\\\\' ) )
.pipe( $.replace( /'/g, '\\\'' ) )
.pipe( $.replace( /^( .* )$/gm, '\'$1\',' ) )
.pipe( $.insert.wrap( 'document.write( [', '].join( "\\n" ) )' ) )
.pipe( $.rename( 'gui.js' ) )
.pipe( gulp.dest( 'build' ) );
2014-08-27 00:01:15 +00:00
2014-09-08 01:31:51 +00:00
} );
2014-08-27 00:01:15 +00:00
2014-09-08 01:31:51 +00:00
gulp.task( 'vulcanize', ['css'], function() {
2014-08-27 00:01:15 +00:00
2014-09-08 01:31:51 +00:00
return gulp.src( 'gui.html' )
.pipe( $.vulcanize( {
dest: 'build',
inline: true,
strip: true
2014-09-08 01:31:51 +00:00
} ) );
2014-08-27 00:01:15 +00:00
2014-09-08 01:31:51 +00:00
} );
2014-08-27 00:01:15 +00:00
2014-09-08 01:31:51 +00:00
gulp.task( 'lint', ['jscs', 'jshint'] );
2014-08-27 00:01:15 +00:00
2014-09-08 01:31:51 +00:00
gulp.task( 'jscs', function() {
2014-09-04 23:53:27 +00:00
2014-09-08 01:31:51 +00:00
return gulp.src( 'elements/**/*.js', '*.json', '*.js' )
.pipe( $.jscs() );
2014-08-27 00:01:15 +00:00
2014-09-08 01:31:51 +00:00
} );
2014-09-02 22:34:12 +00:00
2014-09-08 01:31:51 +00:00
gulp.task( 'jshint', function() {
2014-09-02 22:34:12 +00:00
2014-09-08 01:31:51 +00:00
return gulp.src( 'elements/**/*.js', '*.json', '*.js' )
.pipe( reload( { stream: true, once: true } ) )
.pipe( $.jshint( '.jshintrc' ) )
.pipe( $.jshint.reporter( 'jshint-stylish' ) )
.pipe( $.if( !browserSync.active, $.jshint.reporter( 'fail' ) ) );
2014-09-02 22:34:12 +00:00
2014-09-08 01:31:51 +00:00
} );
2014-09-02 22:34:12 +00:00
2014-09-08 01:31:51 +00:00
gulp.task( 'css', function() {
2014-08-27 00:01:15 +00:00
2014-09-08 01:31:51 +00:00
return css( 'elements/**/*.styl', 'elements' );
2014-09-03 00:14:37 +00:00
2014-09-08 01:31:51 +00:00
} );
2014-09-03 00:14:37 +00:00
2014-09-08 01:31:51 +00:00
gulp.task( 'docs', function() {
2014-08-27 00:01:15 +00:00
2014-09-08 01:31:51 +00:00
css( 'docs/*.styl', 'docs' );
2014-09-03 23:14:14 +00:00
2014-09-08 01:31:51 +00:00
var content = {
readme: marked( fs.readFileSync( 'README.md', 'utf8' ) )
};
2014-09-03 23:14:14 +00:00
2014-09-08 01:31:51 +00:00
return gulp.src( 'docs/template.html' )
.pipe( $.plates( content ) )
.pipe( $.rename( 'index.html' ) )
.pipe( gulp.dest( './' ) );
} );
gulp.task( 'clean', function() {
return gulp.src( ['build/*', '**/*.css'] )
2014-09-08 01:38:29 +00:00
.pipe( $.rimraf() );
2014-09-08 01:31:51 +00:00
} );
function css( src, dest ) {
return gulp.src( src )
.pipe( $.stylus( { use: [nib()] } ) )
.pipe( gulp.dest( dest ) );
2014-09-03 23:14:14 +00:00
}