mirror of
				https://github.com/svg/svgo.git
				synced 2025-10-30 19:25:35 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| const fs = require('fs');
 | |
| const path = require('path');
 | |
| const {
 | |
|   extendDefaultPlugins,
 | |
|   optimize,
 | |
|   createContentItem,
 | |
| } = require('./svgo.js');
 | |
| 
 | |
| const importConfig = async (configFile) => {
 | |
|   const config = require(configFile);
 | |
|   if (config == null || typeof config !== 'object' || Array.isArray(config)) {
 | |
|     throw Error(`Invalid config file "${configFile}"`);
 | |
|   }
 | |
|   return config;
 | |
| };
 | |
| 
 | |
| const isFile = async (file) => {
 | |
|   try {
 | |
|     const stats = await fs.promises.stat(file);
 | |
|     return stats.isFile();
 | |
|   } catch {
 | |
|     return false;
 | |
|   }
 | |
| };
 | |
| 
 | |
| const loadConfig = async (configFile, cwd = process.cwd()) => {
 | |
|   if (configFile != null) {
 | |
|     if (path.isAbsolute(configFile)) {
 | |
|       return await importConfig(configFile);
 | |
|     } else {
 | |
|       return await importConfig(path.join(cwd, configFile));
 | |
|     }
 | |
|   }
 | |
|   let dir = cwd;
 | |
|   // eslint-disable-next-line no-constant-condition
 | |
|   while (true) {
 | |
|     const file = path.join(dir, 'svgo.config.js');
 | |
|     if (await isFile(file)) {
 | |
|       return await importConfig(file);
 | |
|     }
 | |
|     const parent = path.dirname(dir);
 | |
|     if (dir === parent) {
 | |
|       return null;
 | |
|     }
 | |
|     dir = parent;
 | |
|   }
 | |
| };
 | |
| 
 | |
| exports.loadConfig = loadConfig;
 | |
| exports.extendDefaultPlugins = extendDefaultPlugins;
 | |
| exports.optimize = optimize;
 | |
| exports.createContentItem = createContentItem;
 |