尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

深入解析:find_code 插件 react_vite

深入解析:find_code 插件 react_vite
📅 发布时间:2026/6/19 21:21:32

深入解析:find_code 插件 react_vite

find_code 插件 react_vite

const fs = require("fs");
const path = require("path");
const parser = require("@babel/parser");
const traverse = require("@babel/traverse").default;
const generate = require("@babel/generator").default;
// 读取文件内容
const filePath = path.join(__dirname, "index.tsx");
const code = fs.readFileSync(filePath, "utf8");
// 解析代码生成 AST
const ast = parser.parse(code, {
sourceType: "module",
plugins: ["jsx"],
});
// 遍历 AST
// 遍历 AST
traverse(ast, {
JSXOpeningElement(path) {
const line = path.node.loc.start.line;
const pathAttribute = {
type: "JSXAttribute",
name: { type: "JSXIdentifier", name: "path"
},
value: {
type: "StringLiteral",
value: `${filePath
}:${line
}`,
},
};
// 检查是否已经存在 path 属性,如果不存在则添加
const existingPathAttribute = path.node.attributes.find((attr) =>
{
return (
attr.name &&
attr.name.type === "JSXIdentifier" &&
attr.name.name === "path"
);
});
if (!existingPathAttribute) {
path.node.attributes.push(pathAttribute);
}
},
});
// 生成新代码,设置 retainLines 为 true 避免生成不必要的转义序列
const { code: newCode
} = generate(ast, {
retainLines: true,
jsescOption: {
minimal: true,
},
});
// 写入文件
fs.writeFileSync(filePath, newCode, "utf8");
console.log("代码修改完成");
// module
import fs from "fs/promises";
import path from "path";
import parser from "@babel/parser";
import traverse from "@babel/traverse";
import generate from "@babel/generator";
// 定义处理文件的异步函数
async function processFile(filePath) {
try {
// 读取文件内容
const code = await fs.readFile(filePath, "utf8");
// 解析代码生成 AST
const ast = parser.parse(code, {
sourceType: "module",
plugins: ["jsx"],
});
// 遍历 AST
traverse.default(ast, {
JSXOpeningElement(path) {
const line = path?.node?.loc?.start?.line;
const pathAttribute = {
type: "JSXAttribute",
name: { type: "JSXIdentifier", name: "path"
},
value: {
type: "StringLiteral",
value: `${filePath
}:${line
}`,
},
};
// 检查是否已经存在 path 属性,如果不存在则添加
const existingPathAttribute = path.node.attributes.find((attr) =>
{
return (
attr?.name &&
attr?.name.type === "JSXIdentifier" &&
attr?.name.name === "path"
);
});
if (!existingPathAttribute) {
path.node.attributes.push(pathAttribute);
}
},
});
// 生成新代码,设置 retainLines 为 true 避免生成不必要的转义序列
const { code: newCode
} = generate.default(ast, {
retainLines: true,
jsescOption: {
minimal: true,
},
});
// 写入文件
await fs.writeFile(filePath, newCode, "utf8");
console.log("代码修改完成");
} catch (error) {
console.error("处理文件时出错:", error);
}
}
// 获取要处理的文件路径
const filePath = path.join(process.cwd(), "node/index.tsx");
// 调用处理函数
processFile(filePath);

代码修改完成效果

import React from "react";
const Test = () =>
{
return (
<div path="/Users/guojie/跳槽学习文档——速成/vite/node/index.tsx:4">我是根目录<div path="/Users/guojie/跳槽学习文档——速成/vite/node/index.tsx:6">我是子目录</div><span path="/Users/guojie/跳槽学习文档——速成/vite/node/index.tsx:7">我是孙目录</span></div>);};export default Test;

相关新闻

  • SAP BAPI_PR_CREATE 创建采购申请(含自定义字段)
  • NCCL论文阅读
  • 皇牌空战7豪华版DLC补丁

最新新闻

  • 全国学历提升继续教育学习体验实录
  • 验证码绕过实战:从Pikachu靶场剖析客户端与服务端漏洞原理
  • Mission Planner终极指南:5步掌握开源无人机地面站专业飞行控制
  • Gemini大模型系列技术解析与真实能力边界
  • 修复kkFileView XSS漏洞与POI文件预览兼容性问题实战
  • 弱监督学习与概率提示技术在3D目标检测中的应用

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号