You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

68 lines
1.5 KiB

// Native
import {join} from 'path'
import {gzipSync} from 'zlib'
// Packages
import _ from 'babel-polyfill'
import gulp from 'gulp'
import babel from 'gulp-babel'
import {transformFile} from 'babel-core'
import size from 'human-size'
import benchmark from 'gulp-benchmark'
gulp.task('transpile', () => {
gulp.src('src/**/*.js')
.pipe(babel())
.pipe(gulp.dest('dist'))
})
gulp.task('runtime-size', async () => {
const files = [
'flush.js',
'server.js',
'memory.js',
'render.js',
'style.js'
]
const result = await Promise.all(files
.map(f => join(__dirname, 'src', f))
.map(transform))
const code = result.map(({code}) => code).join('')
console.log('-----------------------------------------------')
console.log('files:', files.join(', '))
console.log('minified:', size(code.length))
console.log('minified and gzipped:', size(gzipSync(code).length))
console.log('-----------------------------------------------')
function transform(file) {
return new Promise((resolve, reject) => {
transformFile(file, {
presets: ['babili']
}, (err, data) => {
if (err) {
return reject(err)
}
resolve(data)
})
})
}
})
gulp.task('benchmark', () => {
gulp.src('*.js', {
read: false,
cwd: './benchmark'
})
.pipe(babel())
.pipe(benchmark())
})
gulp.task('watch', () => {
gulp.watch('src/*', ['transpile'])
gulp.watch('benchmark/*.js', ['benchmark'])
})
gulp.task('default', ['transpile', 'watch'])