UNPKG

dev-toolkit

Version:

Universal Development Toolkit for React Veterans

75 lines (59 loc) 3.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _fsExtra = require("fs-extra"); var _log = _interopRequireDefault(require("../log")); var _projectSettings = require("../../webpack/projectSettings"); var _defineGlobalDevToolkitSettings = _interopRequireDefault(require("./defineGlobalDevToolkitSettings")); var _extractedSharedEnvs = _interopRequireDefault(require("./extractedSharedEnvs")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } 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; } var _default = function _default() { // 1) Get User settings from a specified file // ---- var settingsExist = (0, _fsExtra.pathExistsSync)(_projectSettings.userSettingsPath); if (settingsExist) (0, _log.default)({ message: 'Using settings from `dev-toolkit.config.js`' }); // We're expecting a classic Node.js module declared with `module.exports` // NOTE: Using `require` here is necessary so that using settings with an import like // `import { sharedEnvs} from 'dev-toolkit/settings'` doesn't become an async dependency // eslint-disable-next-line import/no-dynamic-require, global-require var userSettings = settingsExist ? require(_projectSettings.userSettingsPath) : {}; // 2) Format settings & generate a safe final version for consumption via node and webpack // ---- var webpack = userSettings.webpack || {}; var devToolkit = userSettings.devToolkit || {}; var sharedEnvs = _objectSpread({}, (0, _extractedSharedEnvs.default)({ withEnvs: devToolkit.sharedEnvs && Array.isArray(devToolkit.sharedEnvs) ? devToolkit.sharedEnvs : [], fromEnvs: process.env }), { // make NODE_ENV always available NODE_ENV: process.env.NODE_ENV }); var finalSettings = { webpack: { rules: webpack.rules && typeof webpack.rules === 'function' ? webpack.rules : function () { return []; }, plugins: webpack.plugins && typeof webpack.plugins === 'function' ? webpack.plugins : function () { return []; }, customize: webpack.customize && typeof webpack.customize === 'function' ? webpack.customize : function (config) { return config; } }, devToolkit: { usePreRender: typeof devToolkit.usePreRender === 'boolean' ? devToolkit.usePreRender : true, removeBuildFolder: typeof devToolkit.removeBuildFolder === 'boolean' ? devToolkit.removeBuildFolder : true, sharedEnvs: sharedEnvs } }; // 3) Define settings in Node so we can use `dev-toolkit/settings` both on the client & server // ---- (0, _defineGlobalDevToolkitSettings.default)({ settings: finalSettings.devToolkit }); return finalSettings; }; exports.default = _default;