Files
hudozka/gulpfile.babel.js
T
2017-05-31 20:58:35 +03:00

116 lines
2.6 KiB
JavaScript

import gulp from 'gulp'
import postcss from 'gulp-postcss'
import sass from 'gulp-sass'
import imageMin from 'gulp-imagemin'
import uglify from 'gulp-uglify'
import concat from 'gulp-concat'
import webpack from 'webpack-stream'
import named from 'vinyl-named'
import autoprefixer from 'autoprefixer'
import cssnano from 'cssnano'
let env = process.env['NODE_ENV'] || 'production'
let isProduction = env === 'production'
gulp.task('compile 3rdparty', () => {
const files = [
'./node_modules/spin.js/spin.js',
'./node_modules/babel-polyfill/dist/polyfill.min.js'
]
return gulp.src(files)
.pipe(concat('libs.js'))
.pipe(uglify())
.pipe(gulp.dest('./public'))
})
gulp.task('style', () => {
const processors = [
autoprefixer({
browsers: ['last 1 version']
}),
cssnano({
zindex: false
})
]
return gulp.src('./src/style/style.scss')
.pipe(sass())
.pipe(postcss(processors))
.pipe(concat('style.css'))
.pipe(gulp.dest('./public'))
})
gulp.task('copy fonts', () => {
return gulp.src('./src/assets/fonts/*/*')
.pipe(gulp.dest('./public/fonts'))
})
gulp.task('copy graphics', () => {
return gulp.src('./src/assets/graphics/*')
.pipe(gulp.dest('./public/graphics'))
})
gulp.task('copy 3rdparty', () => {
return gulp.src('./src/3rdparty/*')
.pipe(gulp.dest('./public'))
})
gulp.task('copy robots.txt', () => {
return gulp.src('./robots.txt')
.pipe(gulp.dest('./public'))
})
gulp.task('copy views', () => {
return gulp.src('./src/views/**')
.pipe(gulp.dest('./out/views'))
})
gulp.task('compile', () => {
const doWatch = !isProduction
const doSourceMaps = !isProduction
return gulp.src([
'./src/public/app.js'
])
.pipe(named())
.pipe(webpack({
devtool: doSourceMaps ? 'inline-source-map' : null,
watch: doWatch,
output: {
filename: '[name].js'
},
module: {
loaders: [
{test: /\.js$/, loader: 'babel'},
{test: /\.html$/, loader: 'raw!html-minify'}
]
},
'html-minify-loader': {
empty: true,
cdata: true,
comments: false,
dom: {
lowerCaseAttributeNames: false
}
}
}))
.pipe(gulp.dest('./public'))
})
gulp.task('imagemin', () => {
return gulp.src('./src/assets/graphics/**/*')
.pipe(imageMin())
.pipe(gulp.dest('./public/graphics'))
})
gulp.task('production', () => {
isProduction = true
})
gulp.task('default', ['style', 'compile'])
gulp.task('copy', ['copy views', 'copy fonts', 'copy graphics', 'copy 3rdparty', 'copy robots.txt'])
gulp.task('deploy', ['default', 'copy', 'compile 3rdparty', 'imagemin'])
gulp.task('compile production', ['production', 'compile'])