深入解析:find_code 插件 react_vite

news/2025/9/24 11:08:17/文章来源:https://www.cnblogs.com/ljbguanli/p/19108796

深入解析: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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二十一、DevOps:从零建设基于K8s的DevOps平台(二)

二十一、DevOps:从零建设基于K8s的DevOps平台(二) 目录二十一、DevOps:从零建设基于K8s的DevOps平台(二)1、DevOps 平台建设1.1 DevOps 流程1.2 DevOps 平台整体设计1.3 集群规划(学习测试环境)1.4 Harbor 私有…

中电金信:从“通用”到“专用”:加速实现金融行业生成式AI应用的必由之路

9月20日,香江科技论坛暨中国计算机学会(CCF)香港两周年交流活动在香港成功举办。本次活动以“共建香港人工智能协同创新高地”为主题,汇聚了来自CCF、高校、企业及科研机构的百余位专家代表。中国电子首席科学家、…

自动构建高质量测试集

基于文档自动生成 QA 对(文档 - 问题 - 答案三元组)是构建高质量测试集、知识库评估或模型微调数据的核心方法,其核心流程围绕 “文档采样→内容解析→LLM 生成→质量过滤→格式输出” 展开。 一、核心目标与前置准…

SAP BAPI_PR_CREATE 创建采购申请(含自定义字段)

创建采购申请一般有两个函数:BAPI_PR_CREATE 和 BAPI_REQUISITION_CREATE。 使用BAPI_REQUISITION_CREATE创建常规的标准的采购申请比较方便,代码如下FUNCTION ZFM_OA2SAP_CREAT_PR. *"-----------------------…

NCCL论文阅读

NCCL论文阅读 目录NCCL论文阅读前言概述NCCL API多GPU管理数据传输通信通道通信层节点内通信节点间通信底层通信协议集合通信算法算法和协议支持通信原语迭代执行模型执行模型对应GPU架构集合通信算法分析总结 前言 NC…

做商城网站要什么证件上海工程公司排名

项目场景&#xff1a; 表格的部分内容是可以被勾选的&#xff0c;部分内容是不可以被勾选的 使用的是 “element-plus”: “^2.2.22”, 以上应该都是兼容的 问题描述 要求el-table表格中&#xff0c;部分内容不可以被勾选&#xff0c;全选框在没有可选内容时&#xff0c;是禁…

做网站时点击显示长春建设股份有限公司

本文首发于欧雷流。由于我会时不时对文章进行补充、修正和润色&#xff0c;为了保证所看到的是最新版本&#xff0c;请阅读原文。在本系列文章《聊聊前端 UI 组件&#xff1a;组件体系》中初步说明了 UI 组件的架构设计&#xff0c;本文将在此基础上进一步展开说说那篇文章中一…

重庆是哪个省划分出来的运城seo招聘

1、HDFS简介 HDFS&#xff08;Hadoop Distributed File System&#xff09;是Hadoop项目的核心子项目&#xff0c;是分布式计算中数据存储管理的基础&#xff0c;是基于流数据模式访问和处理超大文件的需求而开发的&#xff0c;可以运行于廉价的商用服务器上。它所具有的高容错…

橱柜企业网站模板wordpress搭建文件下载

Mitchell Hashimoto 是一名开源软件工程师。由他托管到 GitHub 上的 开源项目 Vagrant&#xff0c;是一个用于创建和部署虚拟化开发环境的工具。近日&#xff0c;Mitchell撰文讲述了在开发 Vagrant 的过程中学到的有关开源软件开发的一些心得。 以下为原文文章&#xff1a; 把 …

新手项目经理如何选工具?2025年这5款上手快、不复杂的项目管理软件适合你

刚接手项目管理任务?选择一款简单高效的工具能让你快速进入角色。2025年最值得新手项目经理关注的5款软件——禅道、Trello、Asana、ClickUp和Notion,它们以直观界面和核心功能设计脱颖而出:禅道满足全流程管控需求…

用DiskGenius重新分区,检测出U盘虚标容量。

​ U盘虚标容量: 我在PDD买了一个32GB的U盘,我重新分区了一下,发现竟然只有10GB可用,20GB容量虚标。 我把32GB分了6个分区,每个分区5GB,最后只保留下来2个分区。检测U盘是否虚标的方法: 可以用Windows自带的磁盘…

2025低空经济时空信息平台

随着低空经济迈入“基建与产业融合”新阶段,时空信息平台作为低空基础设施的“神经中枢”,正通过架构创新与数据融合技术重塑产业生态。本文将深度解析其核心架构、关键技术及落地路径,为行业提供前瞻性参考。一、战…

linux gcc attribute

//函数前面使用这个扩展,表示该函数会被经常调用到,在编译链接时要对其优化,或说是将它和其他同样热(hot)的函数放到一块,这样有利于缓存的存取。 __attribute__((hot))//函数前面使用这个扩展,表示该函数比较冷门…

那个…以后拍证件照,可能真不用花钱了

以后,证件照不要花钱了。​ 说真的,每次一提到“拍证件照”,我就头大。 不知道你们是不是也一样,要么是临时要用,急急忙忙找不到地方;要么就是特地花了一下午,结果拿到一张丑得自己都想报警的照片,还花了一百来…

网站开发后台需要哪些技术wordpress项目导出

Matlab字符串转换及数值格式转换字符串转换函数abs 字符串到ASCII转换dec2hex 十进制数到十六进制字符串转换fprintf 把格式化的文本写到文件中或显示屏上hex2dec 十六进制字符串转换成十进制数hex2num 十六进制字符串转换成IEEE浮点数int2str 整数转换成字符串lower 字符串转换…

想制作自己的网站吗免费搭建个人服务器

传统新式何月なんがつ何時なんじ何分なんぶん何秒なんびょういち一月いちがつ&#xff11;時いちじ&#xff11;分いっぷん&#xff11;秒いちびょうに二月にがつ&#xff12;時にじ&#xff12;分にふん&#xff12;秒にびょうさん三月さんがつ&#xff13;時さんじ&#xff1…

网站做推广需要到工信部备案吗软件项目管理项目计划书

mysql CONCAT()函数用于将多个字符串连接成一个字符串&#xff0c;是最重要的mysql函数之一&#xff1a; mysql CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL &#xff0c;则返回值为 NULL。 回到上一篇文章的问题&#xff1a;假设有两个借款…

CF2147G

CF2147G 困难数论题好窝心。 本文参考了官方题解。 假设 \(\gcd(a,m)=1\) 且 \(a\not=1\) 的情况。 序列 \(b\) 的形式是 \(a^{a^N}\),要使得后面的 \(b_n=1 \bmod m\),\(ord_{m}(a)|a^N\),\(N\) 是一个极大的数。 那…

全栈开发者效率工具图谱:从IDE到云服务的最优组合 - 指南

全栈开发者效率工具图谱:从IDE到云服务的最优组合 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

皇牌空战7豪华版DLC补丁

皇牌空战7豪华版DLC补丁,有人给我的。说要花钱买,买什么。开源,共享。 皇牌空战7豪华版DLC补丁.zip