Gulp Smart Builder

Stop writing big gulpfile for every project! Stop thinking about gulp plugins and dependencies!
Turn on best practicies in your gulpfile in a few lines with Gulp Smart Builder:
package.json
{
"name": "my-app",
"version": "1.0.0",
"main": "src/server.js",
"directories": {
"source": "src",
"destination": "dist",
"public": "dist/assets"
}
}
gulpfile.babel.js
import gulp from 'gulp';
import packageConfig from './package.json';
import buildConfig from './build.config';
import SmartBuilder from 'gulp-smart-builder';
const builder = new SmartBuilder({
root: __dirname,
directories: packageConfig['directories'],
gulp: gulp,
config: buildConfig
});
builder.run();
build.config.js
import objectAssignDeep from 'object-assign-deep';
let config = {
images: {
changed: true
},
styles: {
changed: true
},
swf: true,
templates: {
changed: true
},
webpack: {
dependencies: ['images', 'styles', 'swf', 'templates'],
configFile: './webpack.config.js',
entry: {
'index': './app-client.js',
'server': {
target: 'node',
file: './app-server.js'
}
},
publicPath: '/assets',
sourceMaps: 'inline',
devServer: {
hotModuleReplacement: true,
reactHotLoader: true,
host: 'localhost',
port: 3000
},
extractCSSToFile: false,
longTermCaching: false,
bowerComponents: true
}
};
if (process.env.NODE_ENV === 'production') {
objectAssignDeep(config, {
images: {
changed: false,
imagemin: true
},
styles: {
changed: false,
minify: true,
sourceMaps: 'external'
},
templates: {
changed: false,
htmlmin: true
},
webpack: {
uglify: true,
sourceMaps: 'external'
}
});
}
export default config;