config.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. "use strict";
  2. exports.__esModule = true;
  3. exports.getFilePath = getFilePath;
  4. exports.getBaseSvgoConfig = getBaseSvgoConfig;
  5. exports.getPlugins = getPlugins;
  6. exports.mergeSvgoConfig = mergeSvgoConfig;
  7. var _deepmerge = _interopRequireDefault(require("deepmerge"));
  8. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  9. function getFilePath(state) {
  10. return state.filePath || process.cwd();
  11. }
  12. function getBaseSvgoConfig(config) {
  13. const baseSvgoConfig = {
  14. plugins: [{
  15. prefixIds: true
  16. }]
  17. };
  18. if (config.icon || config.dimensions === false) {
  19. baseSvgoConfig.plugins.push({
  20. removeViewBox: false
  21. });
  22. }
  23. return baseSvgoConfig;
  24. }
  25. function getPlugins(config) {
  26. if (!config || !config.plugins) {
  27. return [];
  28. }
  29. if (!Array.isArray(config.plugins)) {
  30. throw Error('`svgoConfig.plugins` must be an array');
  31. }
  32. return config.plugins;
  33. }
  34. function extractPlugins(config) {
  35. if (!config) return [];
  36. if (!config.plugins) return [];
  37. if (!Array.isArray(config.plugins)) return [config.plugins];
  38. return config.plugins;
  39. }
  40. function mergePlugins(configs) {
  41. const plugins = configs.reduce((merged, config) => _deepmerge.default.all([merged, ...extractPlugins(config)]), {});
  42. return Object.keys(plugins).reduce((array, key) => {
  43. array.push({
  44. [key]: plugins[key]
  45. });
  46. return array;
  47. }, []);
  48. }
  49. function mergeSvgoConfig(...configs) {
  50. const plugins = mergePlugins(configs);
  51. return { ..._deepmerge.default.all(configs.filter(Boolean)),
  52. plugins
  53. };
  54. }