UNPKG

build-boiler

Version:

Build Boilerplate using Webpack, Eslint, Assemble, Nunjucks, and BrowserSync

124 lines (97 loc) 4.15 kB
'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'];