mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
157 lines
3.1 KiB
JavaScript
157 lines
3.1 KiB
JavaScript
|
const gulp = require('gulp')
|
||
|
const babel = require('gulp-babel')
|
||
|
const cache = require('gulp-cached')
|
||
|
const notify_ = require('gulp-notify')
|
||
|
const uglify = require('gulp-uglify')
|
||
|
const webpack = require('webpack-stream')
|
||
|
const del = require('del')
|
||
|
|
||
|
const babelOptions = {
|
||
|
presets: ['es2015', 'react'],
|
||
|
plugins: [
|
||
|
'transform-async-to-generator',
|
||
|
'transform-object-rest-spread',
|
||
|
'transform-class-properties',
|
||
|
'transform-runtime'
|
||
|
]
|
||
|
}
|
||
|
|
||
|
gulp.task('compile', [
|
||
|
'compile-bin',
|
||
|
'compile-lib',
|
||
|
'compile-server',
|
||
|
'compile-client'
|
||
|
])
|
||
|
|
||
|
gulp.task('compile-bin', () => {
|
||
|
return gulp.src('bin/*')
|
||
|
.pipe(cache('bin'))
|
||
|
.pipe(babel(babelOptions))
|
||
|
.pipe(gulp.dest('dist/bin'))
|
||
|
.pipe(notify('Compiled binaries'))
|
||
|
})
|
||
|
|
||
|
gulp.task('compile-lib', () => {
|
||
|
return gulp.src('lib/**/*.js')
|
||
|
.pipe(cache('lib'))
|
||
|
.pipe(babel(babelOptions))
|
||
|
.pipe(gulp.dest('dist/lib'))
|
||
|
.pipe(notify('Compiled lib files'))
|
||
|
})
|
||
|
|
||
|
gulp.task('compile-server', () => {
|
||
|
return gulp.src('server/**/*.js')
|
||
|
.pipe(cache('server'))
|
||
|
.pipe(babel(babelOptions))
|
||
|
.pipe(gulp.dest('dist/server'))
|
||
|
.pipe(notify('Compiled server files'))
|
||
|
})
|
||
|
|
||
|
gulp.task('compile-client', () => {
|
||
|
return gulp.src('client/**/*.js')
|
||
|
.pipe(cache('client'))
|
||
|
.pipe(babel(babelOptions))
|
||
|
.pipe(gulp.dest('dist/client'))
|
||
|
.pipe(notify('Compiled client files'))
|
||
|
})
|
||
|
|
||
|
gulp.task('build', [
|
||
|
'build-dev-client',
|
||
|
])
|
||
|
|
||
|
gulp.task('build-release', [
|
||
|
'build-release-client'
|
||
|
])
|
||
|
|
||
|
gulp.task('build-dev-client', ['compile-lib', 'compile-client'], () => {
|
||
|
return gulp
|
||
|
.src('dist/client/next-dev.js')
|
||
|
.pipe(webpack({
|
||
|
quiet: true,
|
||
|
output: { filename: 'next-dev.bundle.js' }
|
||
|
}))
|
||
|
.pipe(gulp.dest('dist/client'))
|
||
|
.pipe(notify('Built dev client'))
|
||
|
})
|
||
|
|
||
|
gulp.task('build-release-client', ['compile-lib', 'compile-client'], () => {
|
||
|
return gulp
|
||
|
.src('dist/client/next.js')
|
||
|
.pipe(webpack({
|
||
|
quiet: true,
|
||
|
output: { filename: 'next.bundle.js' },
|
||
|
plugins: [
|
||
|
new webpack.webpack.DefinePlugin({
|
||
|
'process.env': {
|
||
|
NODE_ENV: JSON.stringify('production')
|
||
|
}
|
||
|
})
|
||
|
]
|
||
|
}))
|
||
|
.pipe(uglify({ preserveComments: 'license' }))
|
||
|
.pipe(gulp.dest('dist/client'))
|
||
|
.pipe(notify('Built release client'))
|
||
|
})
|
||
|
|
||
|
gulp.task('watch', [
|
||
|
'watch-bin',
|
||
|
'watch-lib',
|
||
|
'watch-server',
|
||
|
'watch-client'
|
||
|
])
|
||
|
|
||
|
gulp.task('watch-bin', function () {
|
||
|
return gulp.watch('bin/*', [
|
||
|
'compile-bin'
|
||
|
])
|
||
|
})
|
||
|
|
||
|
gulp.task('watch-lib', function () {
|
||
|
return gulp.watch('lib/**/*.js', [
|
||
|
'compile-lib',
|
||
|
'build-dev-client'
|
||
|
])
|
||
|
})
|
||
|
|
||
|
gulp.task('watch-server', function () {
|
||
|
return gulp.watch('server/**/*.js', [
|
||
|
'compile-server'
|
||
|
])
|
||
|
})
|
||
|
|
||
|
gulp.task('watch-client', function () {
|
||
|
return gulp.watch('client/**/*.js', [
|
||
|
'compile-client',
|
||
|
'build-dev-client'
|
||
|
])
|
||
|
})
|
||
|
|
||
|
gulp.task('clean', () => {
|
||
|
return del(['dist'])
|
||
|
})
|
||
|
|
||
|
gulp.task('default', [
|
||
|
'compile',
|
||
|
'build',
|
||
|
'watch'
|
||
|
])
|
||
|
|
||
|
gulp.task('release', [
|
||
|
'compile',
|
||
|
'build-release'
|
||
|
])
|
||
|
|
||
|
// avoid logging to the console
|
||
|
// that we created a notification
|
||
|
notify_.logLevel(0)
|
||
|
|
||
|
// notification helper
|
||
|
function notify (msg) {
|
||
|
return notify_({
|
||
|
title: '▲ Next',
|
||
|
message: msg,
|
||
|
icon: false,
|
||
|
onLast: true
|
||
|
})
|
||
|
}
|