123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- /*eslint
- no-console: 0
- */
- var gulp = require('gulp');
- var bump = require('gulp-bump');
- var git = require('gulp-git');
- var publishRelease = require('publish-release');
- var gzipSize = require('gzip-size');
- var runSequence = require('gulp4-run-sequence');
- var fs = require('fs');
- var settings = require('./settings.json');
- var shared = require('./shared.js');
- gulp.task('git-release', gulp.series(['compress'], function (cb) {
- var pkg = require(settings.baseDir + 'package.json');
- var v = 'v' + pkg.version;
- var message = ':package: Release ' + v;
- updateReadmeFileSizes();
- gulp.src(['./package.json', './bower.json', './README.md', './bin/', './dist'])
- .pipe(git.add({ args: '--all --force' }))
- .pipe(git.commit(message));
- git.push('origin', 'master', function () {
- git.tag(v, message, function () {
- git.push('origin', 'master', { args: '--tags' }, cb);
- });
- });
- }));
- // Bump (increase) the version number
- gulp.task('bump-patch', function () {
- return gulp.src(['./package.json', './bower.json'])
- .pipe(bump({ type: 'patch' }))
- .pipe(gulp.dest('./'));
- });
- gulp.task('bump-minor', function () {
- return gulp.src(['./package.json', './bower.json'])
- .pipe(bump({ type: 'minor' }))
- .pipe(gulp.dest('./'));
- });
- gulp.task('bump-major', function () {
- return gulp.src(['./package.json', './bower.json'])
- .pipe(bump({ type: 'major' }))
- .pipe(gulp.dest('./'));
- });
- gulp.task('npm', function (done) {
- require('child_process').spawn('npm', ['publish'], { stdio: 'inherit' })
- .on('close', done);
- });
- gulp.task('github-release', function (done) {
- var pkg = require(settings.baseDir + './package.json');
- var v = 'v' + pkg.version;
- var name = "JsBarcode " + v;
- publishRelease({
- token: process.env.GITHUB_TOKEN,
- owner: "lindell",
- repo: "JsBarcode",
- tag: v,
- name: name,
- assets: [__dirname + "/" + settings.baseDir + "/dist/JsBarcode.all.min.js", __dirname + "/" + settings.baseDir + "/dist/JsBarcode.all.js"]
- }, done);
- });
- gulp.task('release', gulp.series(function (callback) {
- runSequence(
- 'git-release',
- 'github-release',
- 'npm',
- callback
- );
- }));
- gulp.task('patch', function () {
- runSequence(
- 'bump-patch',
- 'release',
- releaseDone
- );
- });
- gulp.task('minor', function () {
- runSequence(
- 'bump-minor',
- 'release',
- releaseDone
- );
- });
- gulp.task('major', function () {
- runSequence(
- 'bump-major',
- 'release',
- releaseDone
- );
- });
- function releaseDone(error) {
- if (error) {
- console.log(error.message);
- }
- else {
- console.log('Successful!');
- }
- }
- function updateReadmeFileSizes() {
- var files = require('./barcode-building.json');
- var readme = fs.readFileSync('README.md', "utf-8");
- // Update .all files
- var allData = fs.readFileSync('dist/JsBarcode.all.min.js');
- var allFilesize = gzipSize.sync(allData);
- var allRegexp = new RegExp('\\|[^\\|]*\\|([ \\t\\*]*\\[JsBarcode\\.all\\.min\\.js\\])');
- readme = readme.replace(allRegexp, "| *" + formatSize(allFilesize) + "* |$1");
- // Update all barcodes files
- for (var i in files) {
- var filename = shared.minifiedFilename(files[i].name);
- var fileData = fs.readFileSync('dist/barcodes/' + filename);
- var fileFilesize = gzipSize.sync(fileData);
- var fileRegexp = new RegExp('\\|[^\\|]*\\|([ \\t]*\\[' + RegExp.escape(filename) + '\\])');
- readme = readme.replace(fileRegexp, "| " + formatSize(fileFilesize) + " |$1");
- }
- fs.writeFileSync('README.md', readme, 'utf8');
- }
- // Util functions
- RegExp.escape = function (s) {
- return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
- };
- function formatSize(bytes) {
- var kilobytes = Math.round(bytes / 1024 * 10) / 10;
- return kilobytes + " kB";
- }
|