Refactor code of gulp scripts

This commit is contained in:
Tyler Long
2017-04-16 18:36:42 +08:00
parent 3d500800f1
commit 8536c975bf
8 changed files with 124 additions and 207 deletions

View File

@@ -15,7 +15,7 @@ var params = {
root: './test/examples', // Set root directory that's being server. Defaults to cwd. root: './test/examples', // Set root directory that's being server. Defaults to cwd.
open: true, // When false, it won't load your browser by default. open: true, // When false, it won't load your browser by default.
ignore: 'scss,my/templates', // comma-separated string for paths to ignore ignore: 'scss,my/templates', // comma-separated string for paths to ignore
// file: "index.html", // When set, serve this file for every 404 (useful for single-page applications) // file: "index.html", // When set, serve this file for every 404 (useful for single-page applications)
wait: 1000, // Waits for all changes, before reloading. Defaults to 0 sec. wait: 1000, // Waits for all changes, before reloading. Defaults to 0 sec.
mount: [['/dist', './dist']] // Mount a directory to a route. mount: [['/dist', './dist']] // Mount a directory to a route.
} }
@@ -32,30 +32,13 @@ gulp.task('watch2', ['live-server'], function () {
// Basic usage // Basic usage
gulp.task('watch-mermaid', function () { gulp.task('watch-mermaid', function () {
return gulp.src('src/mermaid.js') return gulp.src('src/mermaid.js')
.pipe(browserify({ .pipe(browserify({
entry: 'src/mermaid.js', entry: 'src/mermaid.js',
standalone: 'mermaid' standalone: 'mermaid'
})) }))
.pipe(rename('mermaid.js')) .pipe(rename('mermaid.js'))
.pipe(gulp.dest('./dist/')) .pipe(gulp.dest('./dist/'))
.pipe(uglify()) .pipe(uglify())
.pipe(extReplace('.min.js')) .pipe(extReplace('.min.js'))
.pipe(gulp.dest('./dist/')) .pipe(gulp.dest('./dist/'))
}) })
// var bg = require("gulp-bg");
//
// let bgtask;
// gulp.task("server", bgtask = bg("node", "--harmony", "server.js"));
//
// const exitCallback = (proc) => { if (proc.errorcode != 0) { process.exit(proc.errorcode); } };
//
// gulp.task("stop", () => {
// bgtask.setCallback(exitCallback);
// bgtask.stop();
// }
// });
//
// gulp.task("default", ["server"], function() {
// gulp.watch(["server.js"], ["server"]);
// });

View File

@@ -1,12 +1,10 @@
var gulp = require('gulp') var gulp = require('gulp')
var browserify = require('gulp-browserify') var browserify = require('gulp-browserify')
// var shell = require('gulp-shell')
var concat = require('gulp-concat') var concat = require('gulp-concat')
var uglify = require('gulp-uglify') var uglify = require('gulp-uglify')
var extReplace = require('gulp-ext-replace') var extReplace = require('gulp-ext-replace')
var rename = require('gulp-rename') var rename = require('gulp-rename')
// var istanbul = require('gulp-istanbul')
var insert = require('gulp-insert') var insert = require('gulp-insert')
/** /**
@@ -20,123 +18,87 @@ var insert = require('gulp-insert')
// Basic usage // Basic usage
gulp.task('slimDist', function () { gulp.task('slimDist', function () {
// Single entry point to browserify // Single entry point to browserify
return gulp.src('src/main.js') return gulp.src('src/main.js')
.pipe(browserify()) .pipe(browserify())
/* .pipe(browserify({standalone: 'mermaid'})) .pipe(rename('mermaid-legacy.slim.js'))
.on('prebundle', function(bundle) { .pipe(insert.prepend('(function () { var define = undefined; '))
// Keep these external for the slim version. .pipe(insert.append(' })();'))
slim_ext_libs.forEach(function(lib) { .pipe(gulp.dest('./dist/'))
bundle.external(lib); .pipe(uglify())
}); .pipe(extReplace('.min.js'))
}) */ .pipe(gulp.dest('./dist/'))
.pipe(rename('mermaid-legacy.slim.js'))
.pipe(insert.prepend('(function () { var define = undefined; '))
.pipe(insert.append(' })();'))
.pipe(gulp.dest('./dist/'))
.pipe(uglify())
.pipe(extReplace('.min.js'))
.pipe(gulp.dest('./dist/'))
}) })
// Basic usage // Basic usage
gulp.task('fullDist', ['slimDist'], function () { gulp.task('fullDist', ['slimDist'], function () {
// Single entry point to browserify // 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']) gulp.src(['node_modules/d3/d3.min.js', 'node_modules/dagre-d3/dist/dagre-d3.min.js', 'dist/mermaid.slim.js'])
.pipe(concat('mermaid-legacy.full.js')) .pipe(concat('mermaid-legacy.full.js'))
.pipe(gulp.dest('./dist/')) .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']) 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(concat('mermaid.full.min.js'))
.pipe(gulp.dest('./dist/')) .pipe(gulp.dest('./dist/'))
}) })
// Basic usage
// gulp.task('api', shell.task([
// 'browserify src/mermaid.js | uglify > dist/mermaid.min.js',
// 'browserify src/mermaid.js | uglify > dist/mermaid.min.js',
// 'browserify src/mermaidAPI.js -o dist/mermaidAPI.js'
// //'jison src/diagrams/sequenceDiagram/parser/sequenceDiagram.jison -o src/diagrams/sequenceDiagram/parser/sequenceDiagram.js'
// ]));
// Basic usage // Basic usage
gulp.task('mermaid.slim', function () { gulp.task('mermaid.slim', function () {
// Single entry point to browserify
// var EXTERNALS = ['d3']
return gulp.src('src/mermaid.js') return gulp.src('src/mermaid.js')
.pipe(browserify({ .pipe(browserify({
external: ['d3'], external: ['d3'],
entry: 'src/mermaid.js', entry: 'src/mermaid.js',
standalone: 'mermaid' standalone: 'mermaid'
})) }))
.pipe(rename('mermaid.slim.js')) .pipe(rename('mermaid.slim.js'))
// .on('prebundle', function(bundle){ .pipe(gulp.dest('./dist/'))
// EXTERNALS.forEach(function(external){ .pipe(uglify())
// if(external.expose){ .pipe(extReplace('.min.js'))
// bundle.require(external.require, {expose: external.expose} ) .pipe(gulp.dest('./dist/'))
// }
// else{
// bundle.require(external.require)
// }
// })
// })
.pipe(gulp.dest('./dist/'))
.pipe(uglify())
.pipe(extReplace('.min.js'))
.pipe(gulp.dest('./dist/'))
}) })
// Basic usage // Basic usage
gulp.task('mermaid', function () { gulp.task('mermaid', function () {
return gulp.src('src/mermaid.js') return gulp.src('src/mermaid.js')
.pipe(browserify({ .pipe(browserify({
entry: 'src/mermaid.js', entry: 'src/mermaid.js',
standalone: 'mermaid' standalone: 'mermaid'
})) }))
.pipe(rename('mermaid.js')) .pipe(rename('mermaid.js'))
.pipe(gulp.dest('./dist/')) .pipe(gulp.dest('./dist/'))
.pipe(uglify()) .pipe(uglify())
.pipe(extReplace('.min.js')) .pipe(extReplace('.min.js'))
.pipe(gulp.dest('./dist/')) .pipe(gulp.dest('./dist/'))
}) })
// Basic usage // Basic usage
gulp.task('mermaidAPI', function () { gulp.task('mermaidAPI', function () {
return gulp.src('src/mermaidAPI.js') return gulp.src('src/mermaidAPI.js')
.pipe(browserify({ .pipe(browserify({
})) }))
.pipe(gulp.dest('./dist/')) .pipe(gulp.dest('./dist/'))
// .pipe(uglify())
// .pipe(extReplace('.min.js'))
// .pipe(gulp.dest('./dist/'));
}) })
// Basic usage // Basic usage
gulp.task('mermaidAPI.slim', function () { gulp.task('mermaidAPI.slim', function () {
return gulp.src('src/mermaidAPI.js') return gulp.src('src/mermaidAPI.js')
.pipe(browserify({ .pipe(browserify({
debug: true, debug: true,
external: ['d3'] external: ['d3']
})) }))
.pipe(rename('mermaidAPI.slim.js')) .pipe(rename('mermaidAPI.slim.js'))
.pipe(gulp.dest('./dist/')) .pipe(gulp.dest('./dist/'))
.pipe(uglify()) .pipe(uglify())
.pipe(extReplace('.min.js')) .pipe(extReplace('.min.js'))
.pipe(gulp.dest('./dist/')) .pipe(gulp.dest('./dist/'))
}) })
// Build editor // Build editor
gulp.task('editor', function () { 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']) 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(concat('build.js'))
.pipe(gulp.dest('./editor/')) .pipe(gulp.dest('./editor/'))
}) })
// gulp.task('dist', ['slimDist', 'fullDist','jasmine']);
gulp.task('legacy', ['slimDist', 'fullDist']) gulp.task('legacy', ['slimDist', 'fullDist'])
gulp.task('dist', ['mermaidAPI', 'mermaidAPI.slim', 'mermaid.slim', 'mermaid']) gulp.task('dist', ['mermaidAPI', 'mermaidAPI.slim', 'mermaid.slim', 'mermaid'])

View File

@@ -1,8 +1,6 @@
var gulp = require('gulp') var gulp = require('gulp')
// var mdvars = require('gulp-mdvars')
var vartree = require('gulp-vartree') var vartree = require('gulp-vartree')
var gmarked = require('gulp-marked') var gmarked = require('gulp-marked')
// var marked = require('marked')
var concat = require('gulp-concat') var concat = require('gulp-concat')
var frontMatter = require('gulp-front-matter') var frontMatter = require('gulp-front-matter')
var hogan = require('hogan.js') var hogan = require('hogan.js')
@@ -41,7 +39,7 @@ var filelog = require('gulp-filelog')
gulp.task('vartree', ['dox', 'copyContent', 'copySite'], function () { gulp.task('vartree', ['dox', 'copyContent', 'copySite'], function () {
gulp.src(['build/content/**/*.md']) gulp.src(['build/content/**/*.md'])
.pipe(filelog()) .pipe(filelog())
.pipe(frontMatter({ .pipe(frontMatter({
property: 'order' // will put metadata in the file.meta property property: 'order' // will put metadata in the file.meta property
})) }))
@@ -57,24 +55,19 @@ gulp.task('vartree', ['dox', 'copyContent', 'copySite'], function () {
})) // Do whatever you want with the files later })) // Do whatever you want with the files later
.pipe(gulp.dest('build/www')).on('end', function () { .pipe(gulp.dest('build/www')).on('end', function () {
iterator(root) iterator(root)
// console.log('filelist');
// console.log(filelist);
gulp.src(filelist) gulp.src(filelist)
.pipe(concat('all.html')) .pipe(concat('all.html'))
.pipe(gulp.dest('./build/www')).on('end', function () { .pipe(gulp.dest('./build/www')).on('end', function () {
filelist.push('build/www' + '/all.html') filelist.push('build/www' + '/all.html')
gulp.src(filelist) gulp.src(filelist)
.pipe(filelog('html files')) .pipe(filelog('html files'))
// Run each file through a template // Run each file through a template
.pipe(es.map(function (file, cb) { .pipe(es.map(function (file, cb) {
// console.log('file:',fileList); file.contents = Buffer.from(template.render(file))
// file.contents = new Buffer(template.render(file))
file.contents = Buffer.from(template.render(file))
cb(null, file) cb(null, file)
})) }))
// Output to build directory // Output to build directory
.pipe(gulp.dest('./dist/www')) .pipe(gulp.dest('./dist/www'))
}) })
@@ -83,65 +76,60 @@ gulp.task('vartree', ['dox', 'copyContent', 'copySite'], function () {
var dox = require('gulp-dox') var dox = require('gulp-dox')
// var doxJson2Md = require('../plugins/doxJson2Md')
var map = require('map-stream') var map = require('map-stream')
var extReplace = require('gulp-ext-replace') var extReplace = require('gulp-ext-replace')
gulp.task('dox', function () { gulp.task('dox', function () {
// return gulp.src(['src/**/*.js','!src/**/parser/*.js','!src/**/*.spec.js'])
return gulp.src(['./src/**/mermaidAPI.js']) return gulp.src(['./src/**/mermaidAPI.js'])
.pipe(filelog()) .pipe(filelog())
.pipe(dox({ .pipe(dox({
'raw': true 'raw': true
})) }))
.pipe(map(function (file, done) { .pipe(map(function (file, done) {
var json = JSON.parse(file.contents.toString()) var json = JSON.parse(file.contents.toString())
var i var i
var str = '' var str = ''
for (i = 0; i < json.length; i++) { for (i = 0; i < json.length; i++) {
// console.log(json[i].description.full); str = str + json[i].description.full + '\n'
str = str + json[i].description.full + '\n' }
} file.contents = Buffer.from(str)
// file.contents = new Buffer(str) done(null, file)
file.contents = Buffer.from(str) }))
done(null, file) .pipe(extReplace('.md'))
})) .pipe(gulp.dest('./build/content'))
.pipe(extReplace('.md'))
.pipe(gulp.dest('./build/content'))
}) })
gulp.task('copyContent', function () { gulp.task('copyContent', function () {
return gulp.src(['./docs/content/**/*.md']) return gulp.src(['./docs/content/**/*.md'])
.pipe(gulp.dest('./build/content')) .pipe(gulp.dest('./build/content'))
}) })
gulp.task('copyContent', function () { gulp.task('copyContent', function () {
return gulp.src(['./docs/content/**/*.md']) return gulp.src(['./docs/content/**/*.md'])
.pipe(gulp.dest('./build/content')) .pipe(gulp.dest('./build/content'))
}) })
gulp.task('copySite', function () { gulp.task('copySite', function () {
gulp.src(['./dist/mermaid.js']) gulp.src(['./dist/mermaid.js'])
.pipe(filelog()) .pipe(filelog())
.pipe(gulp.dest('./dist/www/javascripts/lib')) .pipe(gulp.dest('./dist/www/javascripts/lib'))
gulp.src(['./docs/site/**/*.css']) gulp.src(['./docs/site/**/*.css'])
.pipe(filelog()) .pipe(filelog())
.pipe(gulp.dest('./dist/www')) .pipe(gulp.dest('./dist/www'))
gulp.src(['./docs/site/**/*.eot']) gulp.src(['./docs/site/**/*.eot'])
.pipe(gulp.dest('./dist/www')) .pipe(gulp.dest('./dist/www'))
gulp.src(['./docs/site/**/*.svg']) gulp.src(['./docs/site/**/*.svg'])
.pipe(gulp.dest('./dist/www')) .pipe(gulp.dest('./dist/www'))
gulp.src(['./docs/site/**/*.png']) gulp.src(['./docs/site/**/*.png'])
.pipe(gulp.dest('./dist/www')) .pipe(gulp.dest('./dist/www'))
gulp.src(['./docs/site/**/*.jpg']) gulp.src(['./docs/site/**/*.jpg'])
.pipe(gulp.dest('./dist/www')) .pipe(gulp.dest('./dist/www'))
gulp.src(['./docs/site/**/*.ttf']) gulp.src(['./docs/site/**/*.ttf'])
.pipe(gulp.dest('./dist/www')) .pipe(gulp.dest('./dist/www'))
gulp.src(['./docs/site/**/*.woff']) gulp.src(['./docs/site/**/*.woff'])
.pipe(gulp.dest('./dist/www')) .pipe(gulp.dest('./dist/www'))
gulp.src(['./docs/site/**/*.woff2']) gulp.src(['./docs/site/**/*.woff2'])
.pipe(gulp.dest('./dist/www')) .pipe(gulp.dest('./dist/www'))
return gulp.src(['./docs/site/**/*.js']) return gulp.src(['./docs/site/**/*.js'])
.pipe(gulp.dest('./dist/www')) .pipe(gulp.dest('./dist/www'))
}) })

View File

@@ -5,9 +5,9 @@ var filelog = require('gulp-filelog')
gulp.task('jison', function () { gulp.task('jison', function () {
return gulp.src('./src/**/*.jison') return gulp.src('./src/**/*.jison')
.pipe(filelog('Jison file:')) .pipe(filelog('Jison file:'))
.pipe(jison({ moduleType: 'commonjs' })) .pipe(jison({ moduleType: 'commonjs' }))
.pipe(gulp.dest('./src/')) .pipe(gulp.dest('./src/'))
}) })
gulp.task('jison_legacy', function () { gulp.task('jison_legacy', function () {

View File

@@ -6,29 +6,29 @@ var concat = require('gulp-concat')
gulp.task('editor-less', function () { gulp.task('editor-less', function () {
gulp.src(['./editor/css/editor.less']) gulp.src(['./editor/css/editor.less'])
.pipe(less({ .pipe(less({
generateSourceMap: false, // default true generateSourceMap: false, // default true
paths: [ path.join(__dirname, 'less', 'includes') ] paths: [path.join(__dirname, 'less', 'includes')]
})) }))
.pipe(concat('editor.css')) .pipe(concat('editor.css'))
.pipe(gulp.dest('./editor/css/')) .pipe(gulp.dest('./editor/css/'))
}) })
gulp.task('mermaid-less', function () { gulp.task('mermaid-less', function () {
gulp.src(['./src/less/*/mermaid.less']) gulp.src(['./src/less/*/mermaid.less'])
.pipe(less({ .pipe(less({
generateSourceMap: false, // default true generateSourceMap: false, // default true
paths: [ path.join(__dirname, 'less', 'includes') ] paths: [path.join(__dirname, 'less', 'includes')]
})) }))
.pipe(rename(function (path) { .pipe(rename(function (path) {
if (path.dirname === 'default') { if (path.dirname === 'default') {
path.basename = 'mermaid' path.basename = 'mermaid'
} else { } else {
path.basename = 'mermaid.' + path.dirname path.basename = 'mermaid.' + path.dirname
} }
path.dirname = '' path.dirname = ''
})) }))
.pipe(gulp.dest('./dist/')) .pipe(gulp.dest('./dist/'))
}) })
gulp.task('less', ['mermaid-less', 'editor-less']) gulp.task('less', ['mermaid-less', 'editor-less'])

View File

@@ -4,8 +4,8 @@ var tagVersion = require('gulp-tag-version')
gulp.task('bump', function () { gulp.task('bump', function () {
gulp.src('./bw.json') gulp.src('./bw.json')
.pipe(bump({key: 'version'})) .pipe(bump({ key: 'version' }))
.pipe(gulp.dest('./')) .pipe(gulp.dest('./'))
}) })
// Assuming there's "version: 1.2.3" in package.json, // Assuming there's "version: 1.2.3" in package.json,
@@ -29,19 +29,12 @@ gulp.task('tag', function () {
*/ */
function inc (importance) { function inc (importance) {
// get all the files to bump version in // get all the files to bump version in
return gulp.src(['./package.json']) return gulp.src(['./package.json'])
// bump the version number in those files // bump the version number in those files
.pipe(bump({type: importance})) .pipe(bump({ type: importance }))
// save it back to filesystem // save it back to filesystem
.pipe(gulp.dest('./')) .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('patch', function () { return inc('patch') })

View File

@@ -1,19 +1,9 @@
var gulp = require('gulp') var gulp = require('gulp')
var jasmine = require('gulp-jasmine') var jasmine = require('gulp-jasmine')
// var gulp = require('gulp')
// var browserify = require('gulp-browserify')
var shell = require('gulp-shell') var shell = require('gulp-shell')
// var jison = require('gulp-jison')
// 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 istanbul = require('gulp-istanbul')
// var insert = require('gulp-insert')
var jshint = require('gulp-jshint') var jshint = require('gulp-jshint')
var stylish = require('jshint-stylish') var stylish = require('jshint-stylish')
var qunit = require('gulp-qunit') var qunit = require('gulp-qunit')
var bower = require('gulp-bower') var bower = require('gulp-bower')

View File

@@ -4,3 +4,4 @@
- node console output colors like Chrome console - node console output colors like Chrome console
- default theme doesn't work for class diagram - default theme doesn't work for class diagram
- mermaidAPI.js cannot be required directly - mermaidAPI.js cannot be required directly
- compile less to css