当前位置: 首页 > news >正文

vite导入优化插件vite-plugin-importer

https://github.com/ajuner/vite-plugin-importer/blob/main/src/index.js

// 正则表达式
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'const transformImportsPlugin=() =>{return {name: 'transform-imports',transform(code, id) {const transformedCode = code.replace(/import\s+\{\s*(\w+)\s*\}\s+from\s+'aui-vue3';/g,(match, p1) => {return `import ${p1} from 'aui-vue3-button';`;});return {code: transformedCode,map: null,};}};
}
// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),transformImportsPlugin()],
})
// 基于AST
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { parse } from '@babel/parser';
import traverse from '@babel/traverse';
import * as t from '@babel/types';
import generate from '@babel/generator';const transformImportsPlugin=(options = {})=> {return {name: 'vite-plugin-transform-imports',transform(code, id) {let ast;try {ast = parse(code, {sourceType: 'module',plugins: ['jsx', 'typescript'],});} catch (error) {return { code, map: null };}let transformedCode = code;const dynamicMappings = {};traverse.default(ast, {ImportDeclaration(path) {const { node } = path;if (node.source.value === 'aui-vue3') {node.specifiers.forEach(specifier => {if (t.isImportSpecifier(specifier)) {const importedName = (specifier.imported as {name:string}).name;const localName = specifier.local.name;dynamicMappings[importedName] = `aui-vue3`;const newImport = t.importDeclaration([t.importDefaultSpecifier(t.identifier(localName))],t.stringLiteral(dynamicMappings[importedName]));path.replaceWith(newImport);}});}},});const result = generate.default(ast, {}, code);transformedCode = result.code;return { code: transformedCode, map: null };},};
}
// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),transformImportsPlugin()],
})
// 官方github
const babelImport = require('babel-plugin-import');
const babel = require('@babel/core');
const importMeta = require('@babel/plugin-syntax-import-meta');function usePluginImport(options) {return {name: 'vite-plugin-importer',transform(code, id) {if (/\.(?:[jt]sx?|vue)$/.test(id) && !/node_modules\/vite/.test(id)) {const plugins = [importMeta, [babelImport, options]]const result = babel.transformSync(code, {ast: true,plugins,sourceFileName: id})return {code: result.code,map: result.map}}},};
};module.exports = usePluginImport//
plugins.push(usePluginImport({libraryName:'aui-vue3',style:false,customName(name:string){return `aui-vue3-${name}`}
}))

相关文章:

  • odoo与人工智能:可能性与新功能探索
  • JavaScript 循环语句总结
  • 网关Gateway
  • 【25-cv-05935】Keith律所代理(绿色巴士图)版权维权案
  • PostgreSQL如何更新和删除表数据
  • 解决报错error: ‘void_t’ is not a member of ‘std’
  • 软件开发新技术课设-个人博客系统(一)
  • Python中的enumerate函数:优雅地遍历序列索引与元素
  • 大模型强化学习中的 PPO、DPO、KTO、ORPO 全解析
  • 【Linux】(1)—进程概念-③Linux进程概念与PCB
  • 2025推客系统小程序开发:独立部署源码交付,高性价比裂变增长引擎
  • 什么是系统调用
  • iVX 如何用 VL 中间语言构建程范式闭环?
  • 【速通RAG实战:进阶】16、AI生成思维导图全技术解析
  • 视频监控管理平台EasyCVR安防监控小知识:视频监控AI智能分析的常见部署方式有哪些?
  • RISC-V PMA、PMP机制深入分析
  • 基于qt5和stk10开发的互联调试
  • leetcode235.二叉搜索树的最近公共祖先:迭代法利用有序性高效寻根
  • 责任链模式:构建灵活可扩展的请求处理体系(Java 实现详解)
  • 数据结构 - 树相关计算题
  • 用meteor框架做的微博网站/小红书seo排名优化
  • 大连网站建设比较好的公司/免费大数据查询平台
  • 介绍自己的做的网站/网页设计工资一般多少
  • 广东快速做网站公司/德阳网站seo
  • 2023北京疫情最新消息今天/宁波网站制作优化服务
  • 网站模板提供源码/谷歌搜索引擎 google