Files
2023-07-12 16:31:19 +01:00

175 lines
3.3 KiB
JavaScript
Executable File

/*
* load plugins
*/
const pkg = require('./package.json')
const banner = [
'/**',
' * <%= pkg.name %> - <%= pkg.description %>',
' * @version v<%= pkg.version %>',
' * @link <%= pkg.homepage %>',
' * @license <%= pkg.license %>',
' */',
''
].join('\n')
// gulp
const gulp = require('gulp')
// load all plugins in "devDependencies" into the letiable $
const $ = require('gulp-load-plugins')({
pattern: ['*'],
scope: ['devDependencies']
})
/*
* clean task
*/
gulp.task('clean', () => {
return $.del(['**/.DS_Store', './build/*', './dist/*'])
})
/*
* scripts tasks
*/
gulp.task('scripts', () => {
return gulp
.src(['./src/scripts/what-input.js'])
.pipe($.standard())
.pipe(
$.standard.reporter('default', {
breakOnError: true,
quiet: false
})
)
.pipe(
$.webpackStream({
module: {
loaders: [
{
test: /.jsx?$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['env']
}
}
]
},
output: {
chunkFilename: '[name].js',
library: 'whatInput',
libraryTarget: 'umd',
umdNamedDefine: true
}
})
)
.pipe($.rename('what-input.js'))
.pipe($.header(banner, { pkg: pkg }))
.pipe(gulp.dest('./dist/'))
.pipe(gulp.dest('./build/scripts/'))
.pipe($.sourcemaps.init())
.pipe($.uglify())
.pipe(
$.rename({
suffix: '.min'
})
)
.pipe($.header(banner, { pkg: pkg }))
.pipe($.sourcemaps.write('./maps'))
.pipe(gulp.dest('./dist/'))
.pipe($.notify('Build complete'))
})
/*
* stylesheets
*/
gulp.task('styles', () => {
let processors = [
$.autoprefixer({
browsers: ['last 3 versions', '> 1%', 'ie >= 10']
}),
$.cssMqpacker({
sort: true
})
]
return gulp
.src(['./src/styles/index.scss'])
.pipe(
$.plumber({
errorHandler: $.notify.onError('Error: <%= error.message %>')
})
)
.pipe($.sourcemaps.init())
.pipe($.sassGlob())
.pipe($.sass())
.pipe($.postcss(processors))
.pipe(
$.cssnano({
minifySelectors: false,
reduceIdents: false,
zindex: false
})
)
.pipe($.sourcemaps.write('maps'))
.pipe(gulp.dest('./build/styles'))
.pipe($.browserSync.stream())
.pipe($.notify('Styles task complete'))
})
/*
* images task
*/
gulp.task('images', () => {
return gulp.src(['./src/images/**/*']).pipe(gulp.dest('./build/images'))
})
/*
* markup task
*/
gulp.task('markup', () => {
return gulp.src(['./src/markup/*']).pipe(gulp.dest('./build'))
})
/*
* deploy task
*/
gulp.task('deploy', () => {
return gulp.src('./build/**/*').pipe($.ghPages())
})
/*
* default task
*/
gulp.task('default', () => {
$.runSequence('clean', ['markup', 'scripts', 'styles', 'images'], () => {
$.browserSync.init({
server: {
baseDir: './build/'
}
})
gulp
.watch(
['./src/scripts/what-input.js', './src/scripts/polyfills/*.js'],
['scripts']
)
.on('change', $.browserSync.reload)
gulp.watch(['./src/styles/{,*/}{,*/}*.scss'], ['styles'])
gulp
.watch(['./src/markup/*.html'], ['markup'])
.on('change', $.browserSync.reload)
})
})