vuecssuiant-designantdreactantantd-vueenterprisefrontendui-designvue-antdvue-antd-uivue3vuecomponent
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.
39 lines
1.1 KiB
39 lines
1.1 KiB
'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;
|
|
|