react-widgets
Version:
An à la carte set of polished, extensible, and accessible inputs built for React
151 lines (120 loc) • 3.73 kB
JavaScript
;
var gulp = require('gulp')
, del = require('del')
, merge = require('merge-stream')
, webpack = require('webpack')
, release = require('jq-release')
, WebpackServer = require("webpack-dev-server")
, concat = require('gulp-concat')
, less = require('gulp-less')
//, assign = require('react/lib/Object.assign')
, rename = require('gulp-rename')
, exec = require('child_process').exec
, babelTransform = require('gulp-babel-helpers')
, plumber = require('gulp-plumber')
, configs = require('./webpack.configs');
gulp.task('dist-clean', function(cb){
del('./dist/*', cb);
})
gulp.task('lib-clean', function(cb){
del('./lib/*', cb);
})
gulp.task('lib-assets', [ 'lib-clean' ], function(){
return merge(
gulp.src('./src/less/*.less')
.pipe(gulp.dest('./lib/less')),
gulp.src('./src/img/*')
.pipe(gulp.dest('./lib/img')),
gulp.src('./src/fonts/*')
.pipe(gulp.dest('./lib/fonts'))
);
})
gulp.task('lib-compile', [ 'lib-clean' ], function(){
return gulp.src(['./src/**/*.js', './src/**/*.jsx'])
.pipe(plumber())
.pipe(babelTransform('./util/babelHelpers.js'))
.pipe(rename({ extname: '.js' }))
.pipe(gulp.dest('./lib'));
})
gulp.task('lib', [ 'lib-clean', 'lib-assets', 'lib-compile'])
gulp.task('dist-assets', function(){
return merge(
gulp.src('./src/less/react-widgets.less')
.pipe(less({ compress: false }))
.pipe(gulp.dest('./dist/css')),
gulp.src('./src/img/*')
.pipe(gulp.dest('./dist/img')),
gulp.src('./src/fonts/*')
.pipe(gulp.dest('./dist/fonts'))
);
})
gulp.task('dist-build', ['lib', 'dist-assets'], function(cb) {
webpack(configs.browser, function(err, stats){
console.log(stats.toString({ colors: true }))
cb()
});
})
gulp.task('test-build', function(cb) {
del('./_test.bundle.js', function(){
webpack(configs.test, cb);
});
})
gulp.task('docs', function(cb) {
webpack(configs.docBuild, cb);
})
gulp.task('dev', function(cb) {
new WebpackServer(webpack(configs.dev), {
publicPath: "/dev",
hot: true,
hotComponent: true,
stats: { colors: true }
})
.listen(8080, 'localhost', function (err, result) {
if (err) return console.log(err);
console.log('Listening at localhost:8080');
cb()
});
})
gulp.task('dev-docs', function(cb) {
del('./docs/docs.js', function(){
new WebpackServer(webpack(configs.docServer), {
publicPath: "/docs",
hot: true,
hotComponent: true,
stats: { colors: true }
})
.listen(8080, "localhost", function (err, result) {
if (err) return console.log(err);
console.log('Listening at localhost:8080');
cb()
})
})
})
gulp.task('less-test', function(){
return gulp.src([
'./src/less/variables.less',
'./src/less/mixins.less',
'./src/less/bootstrap-theme.less',
'./src/less/core.less',
])
.pipe(concat('core.less'))
.pipe(less({ compress: false }))
.pipe(gulp.dest('./dist/css'))
})
gulp.task('release', [ 'lib', 'dist-build']);
gulp.task('publish', ['release'], release)
gulp.task('publish-docs', ['docs'], function(finish){
run('git cm "rebuild docs"', function(){
run('git co gh-pages && git merge master" ', function(){
run('git push origin gh-pages" ', finish)
})
})
function run(cmd, cb){
exec(cmd, function(err, stdout, stderr){
if (err) return finish(err);
console.log(stdout);
console.log(stderr);
cb()
})
}
})