Node 源项目定制化、打包并使用全过程讲解

news2024/9/23 7:31:03

请添加图片描述

👨🏻‍💻 热爱摄影的程序员
👨🏻‍🎨 喜欢编码的设计师
🧕🏻 擅长设计的剪辑师
🧑🏻‍🏫 一位高冷无情的编码爱好者
大家好,我是全栈工程师
欢迎分享 / 收藏 / 赞 / 在看!

【需求】

在使用 VitePress 制作个人文档时,发现官方提供的组件非常不好用,虽然说他们也提供了足够强大的扩展功能,但是定制化始终不尽如人意,满足不了笔者的需求。

好在官方提供了源代码,因此我们就需要在源代码上定制修改,再打包,最后在我们的项目中引入并使用。

此教程涵盖最常见的 Node 源项目(如:Element Plus、uView 等)定制、打包并使用的过程。

【解决】

1 下载源代码至本地

从 GitHub 上下载 VitePress 官方源码至本地:GitHub-VitePress。

使用 WebStorm 等 IDE 打开,打开 package.json 文件,观察文件结构。

养成一个习惯,在修改源代码前先创建一个新的 Git 分支,这边以 dev 为例,并切换至该分支上:

在这里插入图片描述

这边使用的是 pnpm 作为包管理器,因此在根目录下使用命令 pnpm install 安装项目依赖:

在这里插入图片描述

2 个性修改代码

这里以文件 VPFooter.vue 为例,笔者添加了几个 1 作为区分:

在这里插入图片描述

3 项目整合并打包

打开 package.json 文件,可以看到 build 执行内容,在项目根路径下执行命令 pnpm run build 将修改后的项目打包,可以看到生成的
dist 文件夹:

在这里插入图片描述

打包后光有 dist 目录是不够的,完整的还需要相关启动脚本等文件,由于没有看到执行打包后生成的完整内容,因此从正常的
VitePress 项目中的 node_modules 中的 vitepress 目录拷贝出来,并将上一步打包生成的 dist 目录替换进去,整合构成新的文件夹,起名为
vitepress:

在这里插入图片描述
在这里插入图片描述

4 项目中引入并使用

在 Node 项目中引入自己修改的源码有三种方式(以上面的修改过后并整合的的 vitepress 项目为例,注意在要使用的项目上线提前使用命令
npm uninstall vitepress 卸载相应的 vitepress 依赖):

  1. 直接将 vitepress 文件夹拷贝到自己的项目中使用。例如拷贝至自己项目根路径的 deps 目录下,则需要在 package.json 文件中的
    depedencies 添加,再使用命令 npm install 安装依赖:
"dependencies": {
"vitepress": "file:deps/vitepress"
}
  1. 将 vitepress 文件夹打包,并拷贝到自己的项目中使用。优点是体积小,可以避免修改到里面的源码。
# 注意是在 vitepress 的同级目录下执行打包,-C 可以避免再生成一层 vitepress 目录
tar -acvf vitepress.tar.gz -C ./vitepress .

例如拷贝至自己项目根路径的 deps 目录下,则需要在 package.json 文件中的 depedencies 添加,再使用命令 npm install 安装依赖:

"dependencies": {
"vitepress": "file:deps/vitepress.tag.gz"
}
  1. 使用 GitHub 链接。

在 GitHub 中新建仓库 vitepress 并将 vitepress 文件夹上传过去(这里可以起一个 tag 做一下标记):

在这里插入图片描述

在 package.json 文件中的 depedencies 添加之前步骤中仓库的链接(有 tag 的记得带上),再使用命令 npm install 安装依赖:

"dependencies": {
"vitepress": "github:hongyoudan/vitepress#<tag>"
}

最终效果:

在这里插入图片描述

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

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

相关文章

分布式面试题-理论部分(十二道)

文章目录 分布式面试题&#xff08;十二道&#xff09;分布式理论1. 说说CAP原理2. 为什么CAP不可兼得呢&#xff1f;3. CAP对应的模型和应用&#xff1f;4. BASE理论了解吗&#xff1f; 分布式锁5. 有哪些分布式锁的实现方案呢&#xff1f;**5.1 MySQL分布式锁如何实现呢&…

[2023-年度总结]凡是过往,皆为序章

原创/朱季谦 2023年12月初&#xff0c;傍晚&#xff0c;在深圳的小南山看了一场落日。 那晚我们坐在山顶的草地上&#xff0c;拍下了这张照片——仿佛在秋天的枝头上&#xff0c;结出一颗红透的夕阳。 这一天很快就会随着夜幕的降临&#xff0c;化作记忆的碎片&#xff0c;然…

PoE交换机传输距离是多少?100米?250米?

你们好&#xff0c;我的网工朋友。 今天和你聊聊PoE交换机&#xff0c;之前有系统地给你讲解过一篇&#xff0c;可以先回顾一下哈&#xff1a;《啥样的交换机才叫高级交换机&#xff1f;这张图告诉你》 为什么都说PoE交换机好&#xff1f;它最显著的特点就是&#xff1a; 可…

openGauss学习笔记-173 openGauss 数据库运维-备份与恢复-导入数据-对表执行VACUUM

文章目录 openGauss学习笔记-173 openGauss 数据库运维-备份与恢复-导入数据-对表执行VACUUM openGauss学习笔记-173 openGauss 数据库运维-备份与恢复-导入数据-对表执行VACUUM 如果导入过程中&#xff0c;进行了大量的更新或删除行时&#xff0c;应运行VACUUM FULL命令&…

【2024 行人重识别最新进展】ReID3D:首个关注激光雷达行人 ReID 的工作!

【2024 行人重识别最新进展】ReID3D&#xff1a;首个关注激光雷达行人 ReID 的工作&#xff01; 摘要&#xff1a;数据集&#xff1a;方法模型&#xff1a;多任务预训练&#xff1a;ReID Network&#xff1a; 实验结果&#xff1a;结论&#xff1a; 来源&#xff1a;Arxiv 2023…

Jenkins的特殊操作定时自动执行任务以及测试报告调优

java -Dhudson.model.DirectoryBrowserSupport.CSP -jar Jenkins.war 测试报告 不美丽 执行上面的代码 重启jenkins 就好了

Ensp dhcp全局地址池(配置命令 + 实例)

使用DHCP的好处&#xff1a;减少管理员的工作量、避免输入错误的可能、避免ip冲突 DHCP报文类型&#xff1a; DHCP DISCOVER:客户端用来寻找DHCP服务器 DHCP OFFER:DHCP服务器用来响应DHCP DISCOVER报文&#xff0c;此报文携带了各种配置信息 DHCP REQUEST:客户端配置请求确…

8+WGCNA+免疫+实验,干湿结合的经典生信思路,可冲

今天给同学们分享一篇生信文章“Identifying the key genes of Epstein-Barr virus-regulated tumour immune microenvironment of gastric carcinomas”&#xff0c;这篇文章发表在Cell Prolif期刊上&#xff0c;影响因子为8.5。 结果解读&#xff1a; EBV感染改变了胃癌中的…

【Java注解的作用是什么?】

&#x1f341;Java注解的作用是什么&#xff1f; &#x1f341;典型解析&#x1f341;扩展知识仓&#x1f341;什么是元注解&#x1f341;Retention&#x1f341;Target&#x1f341;Documented&#x1f341;Inherited &#x1f341;典型解析 Java 注解用于为 Java 代码提供元数…

【DataGrip使用小技巧】2

【技巧1】要将活动编辑器与剪贴板内容进行比较&#xff0c;请右键单击编辑器中的任意位置&#xff0c;然后从上下文菜单中选择compare with Clipboard. 如图所示 剪贴板和编辑器的比较一目了然 【技巧2】若要创建表的备份副本&#xff0c;请将表拖到数据库树视图中同一数据源的…

AI项目十九:YOLOV8实现目标追踪

若该文为原创文章&#xff0c;转载请注明原文出处。 主要是学习一下实现目标追踪的原理&#xff0c;并测试一下效果。 目的是通过YOLOV8实现人员检测&#xff0c;并实现人员追踪&#xff0c;没个人员给分配一个ID&#xff0c;实现追踪的效果。 也可以统计人数。在小区办公楼…

Linux:线程优先级设置

目录 一、背景二、调整普通线程的优先级通过系统命令通过Linux C代码 三、调整实时线程的优先级通过系统命令通过Linux C代码 四、参考资料&#xff08;建议一定要阅读&#xff09; 在操作系统中&#xff0c;线程优先级决定了线程在 CPU 调度时的重要性。较高优先级的线程会在竞…

Python能做大项目(6)Poetry -- 项目管理的诗和远方之一

[Poetry] 是一个依赖管理和打包工具。Poetry 的作者解释开发 Poetry 的初衷时说&#xff1a; 通过前面的案例&#xff0c;我们已经提出了一些问题。但不止于此。 当您将依赖加入到 requirements.txt 时&#xff0c;没有人帮你确定它是否与既存的依赖能够和平共处&#xff0c;这…

java数据结构与算法刷题-----LeetCode633. 平方数之和

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 思路一&#xff1a;双指针 可以使用双指针&#xff0c;不断从两个方向匹配…

分享71个Java源码总有一个是你想要的

分享71个Java源码总有一个是你想要的 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 链接&#xff1a;https://pan.baidu.com/s/1frK-W3GT8WrydSlQ-E3o6A?pwd6666 提取码&#xff1a;6666 UI代码 def __init__(self):import …

大数据技术学习笔记(十一)—— Flume

目录 1 Flume 概述1.1 Flume 定义1.2 Flume 基础架构 2 Flume 安装3 Flume 入门案例3.1 监控端口数据3.2 实时监控单个追加文件3.3 实时监控目录下多个新文件3.4 实时监控目录下的多个追加文件 4 Flume 进阶4.1 Flume 事务4.2 Flume Agent 内部原理4.3 Flume 拓扑结构4.3.1 简单…

C++之多层 if-else-if 结构优化(三)

C之多层 if-else-if 结构优化(二)-CSDN博客 接上面的内容继续讲解多层 if-else-if结构优化 8、利用规则执行器来进行优化 8.1 业务场景介绍 if (未注册用户){return false; }if (是否国外用户) {return false; }if (刷单用户) {return false; }if (未付费用户 && 不…

数据仓库【2】:架构

数据仓库【2】&#xff1a;架构 1、架构图2、ETL流程2.1、ETL -- Extract-Transform-Load2.1.1、数据抽取&#xff08;Extraction&#xff09;2.1.2、数据转换&#xff08;Transformation&#xff09;2.1.3、数据加载&#xff08; Loading &#xff09; 2.2、ETL工具2.2.1、结构…

github新建仓库推送代码教学

之前一直用gitee&#xff0c;准备转到github。因为一步一步尝试。如果是新手或许文章会有帮助 点击 new 创建 拉代码 Idea 打开 复制一个 pom 文件作为 maven 管理 提交代码 不出意外的出意外&#xff0c;报错 点击authorize JetBrains 失败 分析问题 本质就是没有…

零基础入门网络安全必看的5本书籍(附PDF)

书中自有黄金屋&#xff0c;书中自有颜如玉。很多人学习一门技术都会看大量的书籍&#xff0c;经常也有朋友询问&#xff1a;零基础刚入门&#xff0c;应该看哪些书&#xff1f;应该怎么学&#xff1f;等等问题。今天就整理了5本零基础入门网络安全必看书籍&#xff0c;希望能帮…