/* eslint-env node */ /** Gulp Commands gulp command* [--export ModuleType] [--name ModuleName] [--testport TestPort] [--testfiles TestFiles] Module name (ModuleName): Compile this to "y.js" (default) Supported module types (ModuleType): - amd - amdStrict - common - commonStrict - ignore (default) - system - umd - umdStrict Test port (TestPort): Serve the specs on port 8888 (default) Test files (TestFiles): Specify which specs to use! Commands: - build: Build this library - develop: Watch the ./src directory. Builds and specs the library on changes. Starts an http-server and serves the test suite on http://127.0.0.1:8888. - build_test: Builds the test suite - test: Test this library */ var gulp = require('gulp') var sourcemaps = require('gulp-sourcemaps') var babel = require('gulp-babel') var uglify = require('gulp-uglify') var minimist = require('minimist') var jasmine = require('gulp-jasmine') var jasmineBrowser = require('gulp-jasmine-browser') var concat = require('gulp-concat') var watch = require('gulp-watch') var polyfills = [ './node_modules/gulp-babel/node_modules/babel-core/node_modules/regenerator/runtime.js' ] var options = minimist(process.argv.slice(2), { string: ['export', 'name', 'testport', 'testfiles'], default: { export: 'ignore', name: 'y.js', testport: '8888', testfiles: 'src/**/*.js' } }) var yfiles = polyfills.concat(['src/y.js', 'src/Connector.js', 'src/OperationStore.js', 'src/Struct.js', 'src/Utils.js', 'src/OperationStores/RedBlackTree.js', 'src/Memory.js', 'src/**/*.js']) var files = { y: yfiles.concat(['!src/**/*.spec.js']), test: yfiles.concat([options.testfiles]), build_test: ['build_test/y.js'] } gulp.task('build', function () { /* return gulp.src(files.y) .pipe(sourcemaps.init()) .pipe(concat(options.name)) .pipe(babel({ loose: "all", modules: options.export, // blacklist: "regenerator" // you can't uglify when regenerator is blacklisted! })) .pipe(uglify()) .pipe(sourcemaps.write(".")) .pipe(gulp.dest("."));*/ return gulp.src(files.y) .pipe(sourcemaps.init()) .pipe(concat(options.name)) .pipe(babel({ loose: 'all', modules: 'ignore', optional: ['es7.asyncFunctions'], blacklist: ['regenerator'], experimental: true })) .pipe(sourcemaps.write()) .pipe(gulp.dest('.')) }) gulp.task('test', function () { return gulp.src(files.test) .pipe(sourcemaps.init()) .pipe(concat('jasmine')) .pipe(babel({ loose: 'all', optional: ['es7.asyncFunctions'], modules: 'ignore', experimental: true })) .pipe(uglify()) .pipe(sourcemaps.write()) .pipe(gulp.dest('build')) .pipe(jasmine({ verbose: true, includeStuckTrace: true })) }) gulp.task('build_jasmine_browser', function () { gulp.src(files.test) .pipe(sourcemaps.init()) .pipe(concat('jasmine_browser.js')) .pipe(babel({ loose: 'all', modules: 'ignore', optional: ['es7.asyncFunctions'], // blacklist: "regenerator", experimental: true })) .pipe(sourcemaps.write()) .pipe(gulp.dest('build')) }) gulp.task('develop', ['build_jasmine_browser', 'build'], function () { gulp.watch(files.test, ['build_jasmine_browser']) // gulp.watch(files.test, ["test"]) gulp.watch(files.test, ['build']) return gulp.src('build/jasmine_browser.js') .pipe(watch('build/jasmine_browser.js')) .pipe(jasmineBrowser.specRunner()) .pipe(jasmineBrowser.server({port: options.testport})) }) gulp.task('default', ['build', 'test'])