You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.5 KiB
67 lines
1.5 KiB
"use strict"; |
|
|
|
exports.__esModule = true; |
|
exports.getFilePath = getFilePath; |
|
exports.getBaseSvgoConfig = getBaseSvgoConfig; |
|
exports.getPlugins = getPlugins; |
|
exports.mergeSvgoConfig = mergeSvgoConfig; |
|
|
|
var _deepmerge = _interopRequireDefault(require("deepmerge")); |
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
|
|
|
function getFilePath(state) { |
|
return state.filePath || process.cwd(); |
|
} |
|
|
|
function getBaseSvgoConfig(config) { |
|
const baseSvgoConfig = { |
|
plugins: [{ |
|
prefixIds: true |
|
}] |
|
}; |
|
|
|
if (config.icon || config.dimensions === false) { |
|
baseSvgoConfig.plugins.push({ |
|
removeViewBox: false |
|
}); |
|
} |
|
|
|
return baseSvgoConfig; |
|
} |
|
|
|
function getPlugins(config) { |
|
if (!config || !config.plugins) { |
|
return []; |
|
} |
|
|
|
if (!Array.isArray(config.plugins)) { |
|
throw Error('`svgoConfig.plugins` must be an array'); |
|
} |
|
|
|
return config.plugins; |
|
} |
|
|
|
function extractPlugins(config) { |
|
if (!config) return []; |
|
if (!config.plugins) return []; |
|
if (!Array.isArray(config.plugins)) return [config.plugins]; |
|
return config.plugins; |
|
} |
|
|
|
function mergePlugins(configs) { |
|
const plugins = configs.reduce((merged, config) => _deepmerge.default.all([merged, ...extractPlugins(config)]), {}); |
|
return Object.keys(plugins).reduce((array, key) => { |
|
array.push({ |
|
[key]: plugins[key] |
|
}); |
|
return array; |
|
}, []); |
|
} |
|
|
|
function mergeSvgoConfig(...configs) { |
|
const plugins = mergePlugins(configs); |
|
return { ..._deepmerge.default.all(configs.filter(Boolean)), |
|
plugins |
|
}; |
|
} |