var gulp = require('gulp'); var webpack = require('webpack'); var mocha = require('gulp-spawn-mocha'); var eslint = require('gulp-eslint'); var each = require('gulp-each'); var fc2json = require('gulp-file-contents-to-json'); var log = require('fancy-log'); var exec = require('child_process').exec; const fs = require('fs'); var DEBUG = process.env.NODE_ENV === 'debug'; var CI = process.env.CI === 'true'; var vfsBefore = "this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = "; var vfsAfter = ";"; gulp.task('build', function (callback) { webpack(require('./webpack.config.js'), function (err, stats) { if (err) { callback(err); return; } log("[webpack]", stats.toString({})); if (stats.compilation.errors && stats.compilation.errors.length) { callback(stats.compilation.errors); return; } callback(); }); }); gulp.task('buildWithStandardFonts', function (callback) { webpack(require('./webpack-standardfonts.config.js'), function (err, stats) { if (err) { callback(err); return; } log("[webpack]", stats.toString({})); if (stats.compilation.errors && stats.compilation.errors.length) { callback(stats.compilation.errors); return; } callback(); }); }); gulp.task('test', function () { return gulp.src(['./tests/**/*.js']) .pipe(mocha({ debugBrk: DEBUG, R: CI ? 'spec' : 'nyan' })); }); gulp.task('lint', function () { return gulp.src(['./src/**/*.js']) .pipe(eslint()) .pipe(eslint.format()) .pipe(eslint.failAfterError()); }); gulp.task('buildFonts', function () { return gulp.src(['./examples/fonts/*.*']) .pipe(each(function (content, file, callback) { var newContent = Buffer.from(content).toString('base64'); callback(null, newContent); }, 'buffer')) .pipe(fc2json('vfs_fonts.js', { flat: true })) .pipe(each(function (content, file, callback) { var newContent = vfsBefore + content + vfsAfter; callback(null, newContent); }, 'buffer')) .pipe(gulp.dest('build')); }); gulp.task('watch', function () { gulp.watch('./src/**', ['test', 'build']); gulp.watch('./tests/**', ['test']); }); gulp.task('generateExamples', function (cb) { var errCount = 0; var position = 0; process.chdir('examples'); const items = fs.readdirSync('.'); const files = items.filter(file => file.substring(file.length - 3, file.length) === '.js'); files.forEach(function (file) { exec(`node ${file}`, function (err, stdout, stderr) { position++; log('FILE: ', file, ` (${position}/${files.length})`); log(stdout); if (err) { errCount++; log(stderr); } if (position === files.length) { if (errCount) { log('Errors count: ', errCount); } cb(); } }); }); }); gulp.task('default', gulp.series(/*'lint',*/ 'test', 'build', 'buildFonts'));