improving.. breaking.. the gulpfile

This commit is contained in:
Kevin Jahns 2015-11-06 16:16:38 +01:00
parent 0832be2380
commit 138afe39dc
4 changed files with 99 additions and 62 deletions

View File

@ -5,28 +5,47 @@ var minimist = require('minimist')
module.exports = function (gulp, helperOptions) {
var runSequence = require('run-sequence').use(gulp)
var options = minimist(process.argv.slice(2), {
string: ['modulename', 'export', 'name', 'testport', 'testfiles', 'regenerator'],
string: ['modulename', 'export', 'name', 'testport', 'testfiles'],
default: {
modulename: helperOptions.moduleName,
targetName: helperOptions.targetName,
export: 'ignore',
testport: '8888',
testfiles: 'src/**/*.js',
regenerator: process.version < 'v0.12'
testfiles: '**/*.spec.js',
browserify: helperOptions.browserify != null ? helperOptions.browserify : false,
regenerator: true,
debug: false
}
})
if (options.regenerator === 'false') {
options.regenerator = false
// TODO: include './node_modules/gulp-babel/node_modules/babel-core/node_modules/regenerator/runtime.js'
}
var concatOrder = [
'y.js',
'Connector.js',
'Database.js',
'Transaction.js',
'Struct.js',
'Utils.js',
'Databases/RedBlackTree.js',
'Databases/Memory.js',
'Databases/IndexedDB.js',
'Connectors/Test.js',
'Types/Array.js',
'Types/Map.js',
'Types/TextBind.js'
]
var yjsfiles = concatOrder.map(function (f) {
return '../yjs/src/' + f
})
var files = {
src: helperOptions.polyfills.concat(helperOptions.concatOrder.map(function (f) {
dist: helperOptions.polyfills.concat(helperOptions.files.map(function (f) {
return 'src/' + f
})),
test: ['build/Helper.spec.js'].concat(helperOptions.concatOrder.map(function (f) {
return 'build/' + f
}).concat(['build/**/*.spec.js']))
}
if (options.regenerator) {
files.test = helperOptions.polyfills.concat(files.test)
test: ['../yjs/src/Helper.spec.js'].concat(yjsfiles).concat(helperOptions.files.map(function (f) {
return 'src/' + f
}).concat(['src/' + options.testfiles]))
}
var babelOptions = {
@ -34,54 +53,64 @@ module.exports = function (gulp, helperOptions) {
modules: 'ignore',
experimental: true
}
if (!options.regenerator) {
if (options.regenerator) {
files.test = helperOptions.polyfills.concat(files.test)
} else {
babelOptions.blacklist = 'regenerator'
}
// babelOptions.blacklist = 'regenerator'
gulp.task('dist', ['build:dist'], function () {
function createDist (pipe) {
return pipe
.pipe($.if(options.debug, $.sourcemaps.init({loadMaps: true})))
.pipe($.concat(options.targetName))
.pipe($.if(!options.debug && options.regenerator, $.uglify()))
.pipe($.if(options.debug, $.sourcemaps.write('.')))
.pipe(gulp.dest('./dist/'))
}
var pipe
if (options.browserify || true) {
var browserify = require('browserify')
var source = require('vinyl-source-stream')
var buffer = require('vinyl-buffer')
pipe = browserify({
entries: 'build/' + options.targetName,
debug: options.debug
}).bundle()
.pipe(source(options.targetName))
.pipe(buffer())
} else {
pipe = gulp.src('build/' + options.targetName)
}
return createDist(pipe)
})
gulp.task('dist', function () {
return gulp.src(files.src)
.pipe($.sourcemaps.init())
var browserify = require('browserify')
var source = require('vinyl-source-stream')
var buffer = require('vinyl-buffer')
return browserify({
entries: files.dist,
debug: options.debug
}).bundle()
.pipe(source(options.targetName))
.pipe(buffer())
.pipe($.if(options.debug, $.sourcemaps.init({loadMaps: true})))
.pipe($.concat(options.targetName))
.pipe($.babel({
loose: 'all',
modules: 'ignore',
experimental: true
}))
.pipe($.uglify())
.pipe($.sourcemaps.write('.'))
.pipe($.if(!options.debug && options.regenerator, $.uglify()))
.pipe($.if(options.debug, $.sourcemaps.write('.')))
.pipe(gulp.dest('./dist/'))
})
gulp.task('watch:dist', function () {
gulp.src(files.src)
.pipe($.watch(files.src))
.pipe($.sourcemaps.init())
.pipe($.concat(options.targetName))
.pipe($.babel({
loose: 'all',
modules: 'ignore',
experimental: true
}))
// .pipe($.uglify())
.pipe($.sourcemaps.write('.'))
.pipe(gulp.dest('./dist/'))
})
gulp.task('build', function () {
return gulp.src('src/**/*.js')
.pipe($.sourcemaps.init())
.pipe($.babel(babelOptions))
.pipe($.sourcemaps.write())
.pipe(gulp.dest('build'))
})
gulp.task('watch:build', function () {
gulp.src('src/**/*.js')
.pipe($.watch('src/**/*.js'))
.pipe($.sourcemaps.init())
.pipe($.babel(babelOptions))
.pipe($.sourcemaps.write())
.pipe(gulp.dest('build'))
gulp.task('watch:dist', function (cb) {
options.debug = true
runSequence('dist', function () {
gulp.watch(files.dist, ['dist'])
cb()
})
})
gulp.task('updateSubmodule', function () {
@ -141,7 +170,7 @@ module.exports = function (gulp, helperOptions) {
})
gulp.task('dev:node', ['test'], function () {
gulp.watch('src/**/*.js', ['test'])
gulp.watch(files.dist, ['test'])
})
gulp.task('dev:browser', ['watch:build'], function () {
@ -151,8 +180,9 @@ module.exports = function (gulp, helperOptions) {
.pipe($.jasmineBrowser.server({port: options.testport}))
})
gulp.task('test', ['build'], function () {
return gulp.src(files.test)
gulp.task('test', function () {
console.log(files.test)
return gulp.src('./dist/y.js')
.pipe($.jasmine({
verbose: true,
includeStuckTrace: true

View File

@ -48,8 +48,8 @@ var $ = require('gulp-load-plugins')()
var runSequence = require('run-sequence').use(gulp)
require('./gulpfile.helper.js')(gulp, {
polyfills: ['./node_modules/gulp-babel/node_modules/babel-core/node_modules/regenerator/runtime.js'],
concatOrder: [
polyfills: [],
files: [
'y.js',
'Connector.js',
'Database.js',
@ -60,7 +60,6 @@ require('./gulpfile.helper.js')(gulp, {
'Databases/Memory.js',
'Databases/IndexedDB.js',
'Connectors/Test.js',
'Connectors/WebRTC.js',
'Types/Array.js',
'Types/Map.js',
'Types/TextBind.js'
@ -84,7 +83,7 @@ gulp.task('dev:examples', ['updateSubmodule', 'watch:dist'], function () {
return $.serve('dist/Examples/')()
})
gulp.task('default', function (cb) {
gulp.task('default', ['updateSubmodule'], function (cb) {
gulp.src('package.json')
.pipe($.prompt.prompt({
type: 'checkbox',

View File

@ -43,12 +43,14 @@
"homepage": "http://y-js.org",
"devDependencies": {
"babel-eslint": "^4.1.2",
"browserify": "^12.0.1",
"gulp": "^3.9.0",
"gulp-babel": "^5.2.1",
"gulp-bump": "^1.0.0",
"gulp-concat": "^2.6.0",
"gulp-filter": "^3.0.1",
"gulp-git": "^1.6.0",
"gulp-if": "^2.0.0",
"gulp-jasmine": "^2.0.1",
"gulp-jasmine-browser": "^0.2.3",
"gulp-load-plugins": "^1.0.0",
@ -58,12 +60,14 @@
"gulp-shell": "^0.5.1",
"gulp-sourcemaps": "^1.5.2",
"gulp-tag-version": "^1.3.0",
"gulp-uglify": "^1.4.1",
"gulp-uglify": "^1.4.2",
"gulp-util": "^3.0.6",
"gulp-watch": "^4.3.5",
"minimist": "^1.2.0",
"pre-commit": "^1.1.1",
"promise-polyfill": "^2.1.0",
"standard": "^5.2.2"
"run-sequence": "^1.1.4",
"standard": "^5.2.2",
"vinyl-buffer": "^1.0.0",
"vinyl-source-stream": "^1.1.0"
}
}

View File

@ -46,6 +46,10 @@ class YConfig {
}
}
if (typeof window !== 'undefined') {
window.Y = Y
}
if (typeof YConcurrency_TestingMode !== 'undefined') {
g.Y = Y //eslint-disable-line
// debugger //eslint-disable-line