add a new barebones config file, wip

This commit is contained in:
Lukas Juhas 2017-11-30 12:39:39 +00:00
parent 9d0e886edb
commit 5feb3a199c
2 changed files with 55 additions and 19 deletions

39
config.barebones.js Normal file
View File

@ -0,0 +1,39 @@
/**
* Base config
*
* src - main assets folder
* public - folder where assets should be compiled
*/
const config = {
src: './assets',
public: './',
};
/**
* Export configuration that is used in gulpfile
*
* For scripts and styles, each file will be a separate bundle
*
* base - base configuration
* scripts - array of script files to create bundles from
*/
export default {
/**
* Base
*/
base: config,
/**
* Scripts
*/
scripts: [
`${config.src}/scripts/scripts.js`,
],
/**
* Styles
*/
styles: [
`${config.src}/styles/*.scss`,
],
};

View File

@ -19,18 +19,15 @@ import notify from 'gulp-notify';
import runSequence from 'run-sequence'; import runSequence from 'run-sequence';
import path from 'path'; import path from 'path';
/**
* Barebones config
*/
import config from './config.barebones';
const { log } = console; const { log } = console;
let production = false; let production = false;
let error = false; let error = false;
/**
* Config
*/
const config = {
src: './assets',
public: './',
};
/** /**
* Tasks - in order * Tasks - in order
*/ */
@ -55,14 +52,14 @@ function notification(message = '', status = 'success') {
* Clean * Clean
*/ */
gulp.task('clean', () => ( gulp.task('clean', () => (
gulp.src([`${config.public}/css`, `${config.public}/js`], { gulp.src([`${config.base.public}/css`, `${config.base.public}/js`], {
read: false, read: false,
}) })
.pipe(clean()) .pipe(clean())
)); ));
gulp.task('styles', () => ( gulp.task('styles', () => (
gulp.src([`${config.src}/styles/*.scss`]) gulp.src(config.styles)
.pipe(gulpif(!production, sourcemaps.init())) .pipe(gulpif(!production, sourcemaps.init()))
.pipe(sass({ .pipe(sass({
outputStyle: production ? 'compressed' : 'nested', outputStyle: production ? 'compressed' : 'nested',
@ -78,7 +75,7 @@ gulp.task('styles', () => (
suffix: '.min', suffix: '.min',
})) }))
.pipe(gulpif(!production, sourcemaps.write('.'))) .pipe(gulpif(!production, sourcemaps.write('.')))
.pipe(gulp.dest(`${config.public}/css`)) .pipe(gulp.dest(`${config.base.public}/css`))
)); ));
gulp.task('scripts', () => { gulp.task('scripts', () => {
@ -88,7 +85,7 @@ gulp.task('scripts', () => {
} }
rollup({ rollup({
entry: `${config.src}/scripts/scripts.js`, entry: `${config.base.src}/scripts/scripts.js`,
plugins: [ plugins: [
multiEntry(), multiEntry(),
buble(), buble(),
@ -100,7 +97,7 @@ gulp.task('scripts', () => {
commonjs({ commonjs({
include: [ include: [
'node_modules/**', 'node_modules/**',
`${config.src}/**`, `${config.base.src}/**`,
], ],
}), }),
json(), json(),
@ -114,7 +111,7 @@ gulp.task('scripts', () => {
format: 'iife', format: 'iife',
moduleName: 'BarebonesBundle', moduleName: 'BarebonesBundle',
sourceMap: !production, sourceMap: !production,
dest: `${config.public}/js/script.min.js`, dest: `${config.base.public}/js/script.min.js`,
}); });
}).catch((err) => { }).catch((err) => {
notification('Failed to compile scripts. 😱', 'error'); notification('Failed to compile scripts. 😱', 'error');
@ -127,9 +124,9 @@ gulp.task('scripts', () => {
* Watch * Watch
*/ */
gulp.task('watch-files', tasks, () => { gulp.task('watch-files', tasks, () => {
gulp.watch(`${config.src}/styles/**/*.scss`, ['styles']); gulp.watch(`${config.base.src}/styles/**/*.scss`, ['styles']);
gulp.watch(`${config.src}/scripts/**/*.js`, ['scripts']); gulp.watch(`${config.base.src}/scripts/**/*.js`, ['scripts']);
gulp.watch(`${config.src}/images/**/*.*`, ['images']); gulp.watch(`${config.base.src}/images/**/*.*`, ['images']);
}); });
/** /**
@ -137,14 +134,14 @@ gulp.task('watch-files', tasks, () => {
*/ */
gulp.task('images', () => { gulp.task('images', () => {
// hadle all images that are not svg // hadle all images that are not svg
gulp.src(`${config.src}/images/**/*.*`) gulp.src(`${config.base.src}/images/**/*.*`)
.pipe(imagemin({ .pipe(imagemin({
progressive: true, progressive: true,
svgoPlugins: [{ svgoPlugins: [{
removeViewBox: false, removeViewBox: false,
}], }],
})) }))
.pipe(gulp.dest(`${config.public}/img`)); .pipe(gulp.dest(`${config.base.public}/img`));
}); });
/** /**