77 lines
2.2 KiB
JavaScript
77 lines
2.2 KiB
JavaScript
var gulp = require('gulp')
|
|
var eslint = require('gulp-eslint')
|
|
|
|
gulp.task('lint', function() {
|
|
return gulp.src(['src/**', 'demo/app.js', 'demo/components/*.jsx'])
|
|
// eslint() attaches the lint output to the eslint property
|
|
// of the file object so it can be used by other modules.
|
|
.pipe(eslint())
|
|
// eslint.format() outputs the lint results to the console.
|
|
// Alternatively use eslint.formatEach() (see Docs).
|
|
.pipe(eslint.format())
|
|
// To have the process exit with an error code (1) on
|
|
// lint error, return the stream and pipe to failOnError last.
|
|
.pipe(eslint.failOnError())
|
|
})
|
|
|
|
|
|
// Demo related tasks
|
|
|
|
var flatten = require('gulp-flatten')
|
|
var stream = require('vinyl-source-stream')
|
|
var buffer = require('vinyl-buffer')
|
|
var browserify = require('browserify')
|
|
var watchify = require('watchify')
|
|
var babelify = require('babelify')
|
|
var browserSync = require('browser-sync').create()
|
|
var reload = browserSync.reload
|
|
|
|
function bundleJs(bundler) {
|
|
return bundler.bundle()
|
|
.pipe(stream('demo/app.js'))
|
|
.pipe(buffer())
|
|
.pipe(flatten())
|
|
.pipe(gulp.dest('demo/assets'))
|
|
}
|
|
|
|
gulp.task('demo:bundle', function() {
|
|
return bundleJs(browserify('./demo/app.js', {debug: true}) // Append a source map
|
|
.transform(babelify))
|
|
})
|
|
|
|
gulp.task('demo:bundleAndWatch', function() {
|
|
var bundler = watchify(browserify('./demo/app.js', Object.assign({debug: true}, watchify.args)))
|
|
.transform(babelify)
|
|
|
|
bundler.on('update', bundleJs.bind(null, bundler))
|
|
|
|
return bundleJs(bundler)
|
|
})
|
|
|
|
gulp.task('demo', ['demo:bundleAndWatch'], function() {
|
|
browserSync.init({
|
|
port: 3010,
|
|
browser: ['google chrome'],
|
|
open: false,
|
|
notify: false,
|
|
server: {
|
|
baseDir: "demo/assets"
|
|
}
|
|
})
|
|
|
|
// Watch JavaScript and lint changes
|
|
gulp.watch(['src/**', 'demo/app.js', 'demo/components/*.jsx'], ['lint'])
|
|
|
|
// Reload when the app CSS or bundled JS changes
|
|
gulp.watch('demo/assets/*.css').on('change', reload)
|
|
gulp.watch('demo/assets/app.js').on('change', reload)
|
|
})
|
|
|
|
// gh-pages related tasks
|
|
|
|
gulp.task('gh-pages', ['demo:bundle'], function() {
|
|
require('del').sync(['gh-pages/**/*.*', '!gh-pages', '!gh-pages/.git'])
|
|
return gulp.src('demo/assets/**/*.*')
|
|
.pipe(gulp.dest('gh-pages'))
|
|
})
|