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.
64 lines
1.5 KiB
64 lines
1.5 KiB
// Native
|
|
import { join } from 'path'
|
|
import { gzipSync } from 'zlib'
|
|
|
|
// Packages
|
|
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'])
|
|
|