40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
| 'use strict';
 | |
| 
 | |
| const { dirname } = require('path');
 | |
| const fs = require('fs');
 | |
| const { getProjectPath } = require('./utils/projectHelper');
 | |
| 
 | |
| function replacePath(path) {
 | |
|   if (path.node.source && /\/lib\//.test(path.node.source.value)) {
 | |
|     const esModule = path.node.source.value.replace('/lib/', '/es/');
 | |
|     const esPath = dirname(getProjectPath('node_modules', esModule));
 | |
|     if (fs.existsSync(esPath)) {
 | |
|       path.node.source.value = esModule;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   // @ant-design/icons-vue/xxx => @ant-design/icons-vue/es/icons/xxx
 | |
|   const antdIconMatcher = /@ant-design\/icons-vue\/([^/]*)$/;
 | |
|   if (path.node.source && antdIconMatcher.test(path.node.source.value)) {
 | |
|     const esModule = path.node.source.value.replace(
 | |
|       antdIconMatcher,
 | |
|       (_, iconName) => `@ant-design/icons-vue/es/icons/${iconName}`,
 | |
|     );
 | |
|     const esPath = dirname(getProjectPath('node_modules', esModule));
 | |
|     if (fs.existsSync(esPath)) {
 | |
|       path.node.source.value = esModule;
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| function replaceLib() {
 | |
|   return {
 | |
|     visitor: {
 | |
|       ImportDeclaration: replacePath,
 | |
|       ExportNamedDeclaration: replacePath,
 | |
|     },
 | |
|   };
 | |
| }
 | |
| 
 | |
| module.exports = replaceLib;
 |