var gulp = require('gulp'); var path = require('path'); var jison = require('gulp-jison'); var less = require('gulp-less'); var shell = require('gulp-shell'); var concat = require('gulp-concat'); var uglify = require('gulp-uglify'); var extReplace = require('gulp-ext-replace'); var rename = require('gulp-rename'); var istanbul = require('gulp-istanbul'); var bump = require('gulp-bump'); var tag_version = require('gulp-tag-version'); gulp.task('jison2', function() { return gulp.src('./src/*.jison') .pipe(jison({ moduleType: 'amd' })) .pipe(gulp.dest('./src/')); }); gulp.task('jison', shell.task([ 'jison src/parser/flow.jison -o src/parser/flow.js' //'source scripts/compileJison.sh' // 'jison src/parser/flow.jison -o src/parser/flow.js', ])) gulp.task('jisonSd', shell.task([ //'jison src/parser/flow.jison -o src/parser/flow.js', 'jison src/parser/sequence.jison -o src/parser/sequence.js' //'source scripts/compileFlow.sh' ])); gulp.task('dist', ['slimDist', 'fullDist','jasmine']); var jasmine = require('gulp-jasmine'); gulp.task('jasmine',['jison'], function () { return gulp.src(['src/**/*.spec.js']) .pipe(jasmine()); }); gulp.task('coverage', function (cb) { gulp.src(['src/**/*.js', '!src/**/*.spec.js']) .pipe(istanbul()) // Covering files .on('finish', function () { gulp.src(['src/**/*.spec.js']) .pipe(jasmine()) .pipe(istanbul.writeReports()) // Creating the reports after tests runned .on('end', cb); }); }); gulp.task('less', function () { gulp.src(['./editor/css/editor.less']) .pipe(less({ generateSourceMap: false, // default true paths: [ path.join(__dirname, 'less', 'includes') ] })) .pipe(concat('editor.css')) .pipe(gulp.dest('./editor/css/')); }); var browserify = require('gulp-browserify'); // Basic usage gulp.task('slimDist', function() { // Single entry point to browserify return gulp.src('src/main.js') .pipe(browserify()) .pipe(rename('mermaid.slim.js')) .pipe(gulp.dest('./dist/')) .pipe(uglify()) .pipe(extReplace('.min.js')) .pipe(gulp.dest('./dist/')); }); // Build editor gulp.task('editor', function() { /*gulp.src(['src/editor.js']) .pipe(browserify()) .pipe(concat('main.js')) .pipe(gulp.dest('./editor/'));*/ return gulp.src(['node_modules/d3/d3.min.js','node_modules/dagre-d3/dist/dagre-d3.min.js','dist/mermaid.slim.js','src/editor.js']) .pipe(concat('build.js')) .pipe(gulp.dest('./editor/')); }); // Basic usage gulp.task('fullDist', ['slimDist'], function() { // Single entry point to browserify gulp.src(['node_modules/d3/d3.min.js','node_modules/dagre-d3/dist/dagre-d3.min.js','dist/mermaid.slim.js']) .pipe(concat('mermaid.full.js')) .pipe(gulp.dest('./dist/')); return gulp.src(['node_modules/d3/d3.min.js','node_modules/dagre-d3/dist/dagre-d3.min.js','dist/mermaid.slim.min.js']) .pipe(concat('mermaid.full.min.js')) .pipe(gulp.dest('./dist/')); }); // Basic usage gulp.task('npmDist', ['slimDist'], function() { // Single entry point to browserify return gulp.src('src/main.js') .pipe(browserify()) .pipe(gulp.dest('./dist/')); }); gulp.task('bump', function(){ gulp.src('./bw.json') .pipe(bump({key: "version"})) .pipe(gulp.dest('./')); }); // Assuming there's "version: 1.2.3" in package.json, // tag the last commit as "v1.2.3"// gulp.task('tag', function() { return gulp.src(['./package.json']).pipe(tag_version()); }); /** * Bumping version number and tagging the repository with it. * Please read http://semver.org/ * * You can use the commands * * gulp patch # makes v0.1.0 → v0.1.1 * gulp feature # makes v0.1.1 → v0.2.0 * gulp release # makes v0.2.1 → v1.0.0 * * To bump the version numbers accordingly after you did a patch, * introduced a feature or made a backwards-incompatible release. */ function inc(importance) { // get all the files to bump version in return gulp.src(['./package.json', './bower.json']) // bump the version number in those files .pipe(bump({type: importance})) // save it back to filesystem .pipe(gulp.dest('./')); // commit the changed version number //.pipe(git.commit('bumps package version')) // read only one file to get the version number //.pipe(filter('package.json')) // **tag it in the repository** //.pipe(tag_version()); } gulp.task('patch', function() { return inc('patch'); }) gulp.task('feature', function() { return inc('minor'); }) gulp.task('release', function() { return inc('major'); })