dev-toolkit
Version:
Universal Development Toolkit for React Veterans
75 lines (59 loc) • 3.43 kB
JavaScript
;
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;