build-boiler
Version:
Build Boilerplate using Webpack, Eslint, Assemble, Nunjucks, and BrowserSync
124 lines (97 loc) • 4.15 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 (opts) {
var _opts$provide = opts.provide;
var provide = _opts$provide === undefined ? {} : _opts$provide;
var isMainTask = opts.isMainTask;
var environment = opts.environment;
var sources = opts.sources;
var toolsPlugin = opts.toolsPlugin;
var utils = opts.utils;
var webpackConfig = opts.webpackConfig;
var SERVER = opts.SERVER;
var TEST = opts.TEST;
var scriptDir = sources.scriptDir;
var isDev = environment.isDev;
var isHfa = environment.isHfa;
var isMaster = environment.isMaster;
var enableIsomorphic = environment.enableIsomorphic;
var _webpackConfig$env = webpackConfig.env;
var env = _webpackConfig$env === undefined ? {} : _webpackConfig$env;
var multipleBundles = webpackConfig.multipleBundles;
var paths = webpackConfig.paths;
var parentPluginFn = webpackConfig.plugins;
var logError = utils.logError;
var cssBundleName = paths.cssBundleName;
var jsBundleName = paths.jsBundleName;
var define = {
'process.env': _extends({
NODE_ENV: JSON.stringify(isDev && !SERVER ? 'development' : 'production')
}, env)
};
if (SERVER) {
define['process.env'].SERVER = true;
} else if (!isDev && !TEST && enableIsomorphic) {
define['process.env'].ISOMORPHIC = true;
}
var hfaEnv = {
NODE_ENV: JSON.stringify(isMaster ? 'production' : 'development'),
BASE_URL: JSON.stringify(isMaster ? '/api/' : 'https://api.hfa.io/'),
GW_CLIENT_ID: JSON.stringify(isMaster ? '25def512a6857b7acd5c922796e923d25b631be064d1f4c217c0e438152dca6d' : 'SO/E+x58++2RGbil19qY9AjP2aZkPLb7EBAvlQ/oauGovBCney4uPKKaqtBJrbQOvXIdMLshLu+NBq79Q1a9pA==')
};
if (isHfa) {
Object.assign(define['process.env'], hfaEnv);
}
var provideDefault = {
'global.sinon': 'sinon',
'window.sinon': 'sinon',
'sinon': 'sinon'
};
var provideConfig = Object.assign({}, provideDefault, provide);
var DefinePlugin = _webpack2.default.DefinePlugin;
var NoErrorsPlugin = _webpack2.default.NoErrorsPlugin;
var ProvidePlugin = _webpack2.default.ProvidePlugin;
var optimize = _webpack2.default.optimize;
var OccurenceOrderPlugin = optimize.OccurenceOrderPlugin;
var OccurrenceOrderPlugin = optimize.OccurrenceOrderPlugin;
//prepare for Webpack 2
var PluginFn = OccurenceOrderPlugin || OccurrenceOrderPlugin;
var plugins = [new PluginFn(), new DefinePlugin(define), new NoErrorsPlugin(), new ProvidePlugin(provideConfig), new _extractTextWebpackPlugin2.default(cssBundleName, {
allChunks: true
})];
if (isMainTask && multipleBundles) {
var CommonsChunkPlugin = _webpack2.default.optimize.CommonsChunkPlugin;
var commons = new CommonsChunkPlugin({
name: 'vendors',
filename: _path2.default.join(scriptDir, jsBundleName),
minChunks: Infinity
});
plugins.push(commons);
}
var processedPlugins = _lodash2.default.isFunction(parentPluginFn) ? parentPluginFn(opts, plugins) : plugins;
if (!_lodash2.default.isArray(processedPlugins)) {
logError({
err: new Error('You forgot to return a plugins array from the custom plugins function'),
plugin: '[webpack: plugins]'
});
}
if (!TEST && !SERVER) {
processedPlugins.push(toolsPlugin);
}
return {
plugins: processedPlugins
};
};
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _extractTextWebpackPlugin = require('extract-text-webpack-plugin');
var _extractTextWebpackPlugin2 = _interopRequireDefault(_extractTextWebpackPlugin);
var _webpack = require('webpack');
var _webpack2 = _interopRequireDefault(_webpack);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
module.exports = exports['default'];