next-compose-plugins
Version:
Provides a cleaner API for enabling and configuring plugins for next.js
45 lines (35 loc) • 1.76 kB
JavaScript
;
var _compose = require("./compose");
var _optional = require("./optional");
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; }
/**
* Composes all plugins together.
*
* @param {array} plugins - all plugins to load and initialize
* @param {object} nextConfig - direct configuration for next.js (optional)
*/
const _withPlugins = ([...plugins], nextConfig = {}) => (phase, {
defaultConfig
}) => {
const config = _objectSpread({}, defaultConfig, nextConfig);
return (0, _compose.composePlugins)(phase, plugins, config);
};
/**
* Extends a base next config.
*
* @param {function} baseConfig - basic configuration
*/
const extend = baseConfig => ({
withPlugins: (...params) => (phase, nextOptions) => {
const processedBaseConfig = baseConfig(phase, nextOptions);
return _withPlugins(...params)(phase, _objectSpread({}, nextOptions, {
defaultConfig: processedBaseConfig
}));
}
}); // define exports
const _exports = _withPlugins;
_exports.withPlugins = _withPlugins;
_exports.optional = _optional.markOptional;
_exports.extend = extend;
module.exports = _exports;