89 lines
2.5 KiB
JavaScript
89 lines
2.5 KiB
JavaScript
const gulp = require('gulp')
|
|
const path = require('path')
|
|
|
|
const autoprefixer = require('autoprefixer')
|
|
const babelify = require('babelify')
|
|
const browserify = require('browserify')
|
|
const browsersync = require('browser-sync').create()
|
|
const buffer = require('vinyl-buffer')
|
|
const notifier = require('node-notifier')
|
|
const postcss = require('gulp-postcss')
|
|
const rename = require('gulp-rename');
|
|
const rimraf = require('rimraf')
|
|
const sass = require('gulp-sass')
|
|
const source = require('vinyl-source-stream')
|
|
const sourcemaps = require('gulp-sourcemaps')
|
|
const uglify = require('gulp-uglify')
|
|
const util = require('gulp-util')
|
|
|
|
gulp.task('clean', (cb) => {
|
|
rimraf('./dist', cb)
|
|
})
|
|
|
|
gulp.task('build', ['clean'], () => {
|
|
gulp.start('build:js', 'build:scss')
|
|
})
|
|
|
|
function showError(arg) {
|
|
notifier.notify({
|
|
title: 'Error',
|
|
message: '' + arg,
|
|
sound: 'Basso'
|
|
})
|
|
console.log(arg)
|
|
this.emit('end')
|
|
}
|
|
|
|
gulp.task('build:scss', () => {
|
|
return gulp.src(path.join('examples', 'assets', 'styles.scss'))
|
|
.pipe(sass({
|
|
outputStyle: 'nested',
|
|
precision: 10,
|
|
includePaths: ['.', 'node_modules'],
|
|
onError: showError
|
|
}).on('error', function(error) {
|
|
showError(error)
|
|
this.emit('end')
|
|
}))
|
|
.pipe(postcss([
|
|
autoprefixer({
|
|
browsers: ['last 2 versions', 'Firefox ESR', 'Explorer >= 9', 'Android >= 4.0', '> 2%']
|
|
})
|
|
]))
|
|
.pipe(gulp.dest(path.join('examples', 'assets')))
|
|
.pipe(browsersync.stream({match: '**/*.css'}))
|
|
})
|
|
|
|
gulp.task('build:js', () => {
|
|
return browserify({entries: path.join('src', 'parallax.js'), debug: true, standalone: 'Parallax'})
|
|
.transform("babelify", {presets: ["es2015"]})
|
|
.bundle()
|
|
.on('error', showError)
|
|
.pipe(source('parallax.js'))
|
|
.pipe(buffer())
|
|
.pipe(gulp.dest('dist'))
|
|
.pipe(rename('parallax.min.js'))
|
|
.pipe(sourcemaps.init({loadMaps: true}))
|
|
.pipe(uglify())
|
|
.on('error', showError)
|
|
.pipe(sourcemaps.write('./'))
|
|
.pipe(gulp.dest('dist'))
|
|
.pipe(browsersync.stream({match: path.join('**','*.js')}))
|
|
})
|
|
gulp.task('watch', ['build'], () => {
|
|
browsersync.init({
|
|
notify: false,
|
|
port: 9000,
|
|
server: {
|
|
baseDir: [path.join('examples', 'pages'), path.join('examples', 'assets'), 'dist'],
|
|
directory: true
|
|
}
|
|
})
|
|
|
|
gulp.watch(path.join('src', '*.js'), ['build:js'])
|
|
gulp.watch(path.join('examples', 'assets', '*.scss'), ['build:scss'])
|
|
gulp.watch(path.join('examples', 'pages', '*.html'), browsersync.reload)
|
|
})
|
|
|
|
gulp.task('default', ['watch'])
|