build-boiler
Version:
Build Boilerplate using Webpack, Eslint, Assemble, Nunjucks, and BrowserSync
144 lines (118 loc) • 3.62 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports.default = function (root) {
var devKey = 'development';
var prodKey = 'production';
var _yargs$usage$options = _yargs2.default.usage('Usage: $0 <gulp> $1 <gulp_task> [-e <environment> -f <file_to_test>]').options({
b: {
alias: 'browser',
type: 'string'
},
coverage: {
type: 'boolean',
default: false
},
d: {
alias: 'desktop'
},
e: {
alias: 'ENV',
default: prodKey
},
f: {
alias: 'file',
type: 'string'
},
force: {
type: 'boolean'
},
l: {
alias: 'library',
type: 'string'
},
local: {
type: 'boolean'
},
m: {
alias: 'mobile'
},
r: {
alias: 'release',
type: 'boolean'
},
q: {
alias: 'quick',
type: 'boolean'
}
});
var argv = _yargs$usage$options.argv;
var devTasks = ['watch', 'test:integration'];
if (_lodash2.default.intersection(argv._, devTasks).length) {
argv.ENV = devKey;
}
/**
* Filter out undefined and un-necessary keys
*/
var keys = Object.keys(argv);
var cliConfig = keys.filter(function (key) {
return ['_', '$0', 'e'].indexOf(key) === -1 && argv[key];
}).reduce(function (acc, key) {
var val = argv[key];
//support legacy options of `-e dev` or `-e prod`
if (key === 'ENV') {
switch (val) {
case 'dev':
val = devKey;
break;
case 'prod':
val = prodKey;
break;
}
}
/**
* normalize array values
*/
switch (key) {
//multiple intentional fall through
case 'm':
case 'mobile':
case 'd':
case 'desktop':
val = _lodash2.default.isString(val) ? val.split(',') : val;
break;
}
return _extends({}, acc, _defineProperty({}, key, val));
}, {});
/**
* Load all of the gulp plugins
*/
var pluginOpts = {
lazy: false,
pattern: ['gulp-*', 'gulp.*', 'del', 'run-sequence', 'browser-sync'],
rename: {
'gulp-util': 'gutil',
'run-sequence': 'sequence',
'gulp-if': 'gulpIf'
}
};
var modulePlugins = (0, _gulpLoadPlugins2.default)(_lodash2.default.assign({}, pluginOpts, { config: _path2.default.join(root, 'package.json'), scope: ['dependencies'] }));
var rootPlugins = (0, _gulpLoadPlugins2.default)(_lodash2.default.assign({}, pluginOpts, { config: _path2.default.join(process.cwd(), 'package.json') }));
return {
cliConfig: cliConfig,
plugins: _lodash2.default.assign({}, modulePlugins, rootPlugins)
};
};
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _yargs = require('yargs');
var _yargs2 = _interopRequireDefault(_yargs);
var _gulpLoadPlugins = require('gulp-load-plugins');
var _gulpLoadPlugins2 = _interopRequireDefault(_gulpLoadPlugins);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
module.exports = exports['default'];