| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- const gulp = require('gulp');
- const sourcemaps = require('gulp-sourcemaps');
- const source = require('vinyl-source-stream');
- const buffer = require('vinyl-buffer');
- const browserify = require('browserify');
- const watchify = require('watchify');
- const babelify = require('babelify');
- const pathmod = require('pathmodify');
- const babel = require('gulp-babel');
- const uglify = require('gulp-uglify');
- const gutil = require('gulp-util');
- const zip = require('gulp-zip');
- const fs = require('fs');
- const path = require('path');
- const es = require('event-stream');
- const Promise = require('bluebird');
- Promise.promisifyAll(fs);
- // const archiveFiles = [
- // 'style.css',
- // 'screenshot.png',
- // '*.php'
- // ];
- // const builtFiles = [
- // 'js/*'
- // ];
- const watchedFiles = [
- 'src/markdown/**/*'
- ];
- // const themeName = 'reago';
- function buildClient(watch, done) {
- var bundler =
- browserify('./src/index.js', { debug: true })
- .plugin(pathmod, {mods: [
- pathmod.mod.dir('node_modules', __dirname + '/node_modules'),
- ]})
- // Transform JSX https://github.com/andreypopp/reactify/issues/58
- // Fix unexpected ... https://github.com/babel/babel-loader/issues/170
- .transform(babelify, { presets: ['es2015', 'stage-0', 'react'] });
- return new Promise(function (resolve, reject) {
- bundler.bundle()
- .on('error', function(err) { console.error(err); this.emit('end'); })
- .pipe(source('bundle.react.js'))
- .pipe(buffer())
- // .pipe(uglify())
- .pipe(sourcemaps.init({ loadMaps: true }))
- .pipe(sourcemaps.write('./'))
- .pipe(gulp.dest('./js'))
- .on('end', resolve);
- });
- }
- function extractMarkdown() {
- // return new Promise(function (resolve, reject) {
- return fs.readdirAsync('src/markdown')
- .then(subdirs => Promise.reduce(
- subdirs,
- (carry, dir) =>
- fs.readdirAsync('src/markdown/' + dir)
- .then(files => Promise.reduce(
- files,
- (carry, f) => fs.readFileAsync('src/markdown/' + dir + '/' + f)
- .then(buf => buf.toString())
- .then(content => carry.concat({
- title: path.basename(f, '.md'), content
- })),
- []
- ))
- .then(content => Object.assign(carry, { [dir]: content })),
- {}
- ))
- .then(JSON.stringify)
- .then(markdownJson => fs.writeFileAsync('src/markdown.json', markdownJson))
- // });
- }
- // function makeZip(cb) {
- // return extractThemeVersion()
- // .then(themeVersion => {
- // var base = 'dist/' + themeVersion;
- // var tmp = base + '/reago';
- // var rebasedFiles = base + '/**/*';
- // es.concat(
- // gulp.src(archiveFiles)
- // .pipe(gulp.dest(tmp)),
- // gulp.src(builtFiles)
- // .pipe(gulp.dest( tmp + '/js')),
- // gulp.src(rebasedFiles, { base })
- // .pipe(zip(themeName + '-' + themeVersion + '.zip'))
- // .pipe(gulp.dest('dist'))
- // ).on('end', cb)
- // });
- // }
- gulp.task('watch', function() {
- gulp.watch(['src'], buildClient);
- gulp.watch(watchedFiles, extractMarkdown);
- });
- gulp.task('buildClient', function() {
- return buildClient();
- });
- gulp.task('extractMarkdown', function() {
- return extractMarkdown();
- });
- // gulp.task('makeZip', makeZip);
- gulp.task('default', gulp.series('buildClient', 'extractMarkdown', 'watch'));
|