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

请添加图片描述

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

【需求】

在使用 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>"
}

最终效果:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WGCLOUD快速部署方案 - 批量给Linux安装agent

有时候我们的Linux服务器比较多&#xff0c;一个一个安装比较花费时间&#xff0c;还要WGCLOUD提供了一个辅助工具wgcloud-bach-agent&#xff0c;可以批量给Linux服务器上传agent安装包&#xff0c;并自动解压和启动agent&#xff0c;可以大大减少我们的部署工作和时间 下载和…

无约束优化问题求解(4):牛顿法后续

目录 前言SR1, DFP, BFGS之间的关系 BB方法Reference 前言 Emm&#xff0c;由于上一篇笔记的字数超过了要求&#xff08;这还是第一次- -&#xff09;&#xff0c;就把后续内容放到这篇笔记里面了&#xff0c;公式的标号仍然不变&#xff0c;上一篇笔记的连接在这&#xff1a;…

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 (未付费用户 && 不…

中国肺癌情形

写在前面 再看下中国肺癌的情形 综述 文章名期刊影响因子Non-small cell lung cancer in ChinaCancer Commun16.2 摘要 风险因子&#xff1a;吸烟史、家族史、放射暴露、空气污染、慢性肺病 晚期PD-1/PD-L1抑制剂单药使用或联合化疗药物作为标准治疗。局部肺癌晚期&#xf…

铁山靠之——HarmonyOS基础 - 1.0

HarmonyOS学习第一章 一、HarmonyOS简介1.1 安装和使用DevEco Studio1.2 环境配置1.3 项目创建1.4 运行程序1.5 基本工程目录1.5.1 工程级目录1.5.2 模块级目录1.5.3 app.json51.5.4 module.json51.5.5 main_pages.json 二、TypeScript快速入门2.1 简介2.2 基础类型2.2.1 布尔值…

Python 爬虫之下载视频(三)

批量下载某B主视频 文章目录 批量下载某B主视频前言一、基本思路二、确定遍历循环结构三、基本思路中第12步三、基本思路中第345步总结 前言 上一篇讲了如何去获取标题和视频链接。这篇就跟大家讲一下如何去下载这些视频。本篇会以标题和 视频链接 为突破口&#xff0c;来寻找…

day09

文章目录 一、jQuery简介1. 介绍2. 使用1&#xff09;引入2&#xff09;工厂函数 - $()3&#xff09;原生JS对象与jQuery对象4&#xff09;jQuery获取元素5&#xff09;操作元素内容6&#xff09;操作标签属性7&#xff09;操作标签样式8&#xff09;根据层级结构获取元素9&…

Cisco 将收购 Cilium 母公司 Isovalent,预计 2024 年第 3 季度完成

本文地址&#xff1a;Cisco 将收购 Cilium 母公司 Isovalent&#xff0c;预计 2024 年第 3 季度完成 | 深入浅出 eBPF 2023 年 12 月 21 日&#xff0c;Isovalent 公司 CTO & 联合创始人 Thomas Graf 和 Cisco 安全业务集团高级副总裁兼总经理 Tom Gillis 分别在各自公司网…

解决Unity物体速度过快无法进行碰撞检测(碰撞检测穿透)

解决Unity物体速度过快无法进行碰撞检测&#xff08;碰撞检测穿透&#xff09; 一、解决碰撞检测穿透方法一Collision Detection碰撞检测总结&#xff1a; 二、解决碰撞检测穿透方法二 一、解决碰撞检测穿透方法一 首先我们知道只要是跟碰撞相关的基本都是离不开刚体 Rigidbod…

LuaTable转C#的列表List和字典Dictionary

LuaTable转C#的列表List和字典Dictionaty 介绍lua中创建表测试lua中list表表转成List表转成Dictionary 键值对表表转成Dictionary 多类型键值对表表转成Dictionary 总结 介绍 之前基本都是从C#中的List或者Dictionary转成luaTable&#xff0c;很少会把LuaTable转成C#的List或者…

.net core webapi 大文件上传到wwwroot文件夹

1.配置staticfiles(program文件中) app.UseStaticFiles();2.在wwwroot下创建upload文件夹 3.返回结果封装 namespace webapi;/// <summary> /// 统一数据响应格式 /// </summary> public class Results<T> {/// <summary>/// 自定义的响应码&#xff…

基于Flask、MySQL和Echarts的*市CPI和物价水平数据可视化分析

基于Flask、MySQL和Echarts的*市CPI和物价水平数据可视化分析 引言&#xff1a; 在当前社会经济背景下&#xff0c;CPI&#xff08;居民消费价格指数&#xff09;和物价水平的波动对市场和居民生活产生直接影响。本文将介绍一款基于Flask、MySQL和Echarts的数据可视化系统&…

Nature 新研究发布,GPT 驱动的机器人化学家能够自行设计和进行实验,这对科研意味着什么?

文章目录 前言揭秘Coscientist不到四分钟&#xff0c;设计并改进了程序能力越大&#xff0c;责任越大 前言 有消息称&#xff0c;AI 大模型 “化学家” 登 Nature 能够自制阿司匹林、对乙酰氨基酚、布洛芬&#xff0c;甚至连复杂的钯催化交叉偶联反应&#xff0c;也能完成。 …

20231222给NanoPC-T4(RK3399)开发板的适配Android11的挖掘机方案并跑通AP6398SV

20231222给NanoPC-T4(RK3399)开发板的适配Android11的挖掘机方案并跑通AP6398SV 2023/12/22 7:54 简略步骤&#xff1a;rootrootrootroot-X99-Turbo:~/3TB$ cat Android11.0.tar.bz2.a* > Android11.0.tar.bz2 rootrootrootroot-X99-Turbo:~/3TB$ tar jxvf Android11.0.tar.…

『OPEN3D』1.1 点云处理

目录 1.open3d中的点云IO 2.点云的可视化 3 点云voxel下采样 4. 顶点法线估计 5.最小外界矩 6. 凸包计算 7. 点云距离计算 8. DBSCAN clustering聚类 9. RANSAC(Random Sample Consensus) 10. 点云平面分割 11. 隐藏点移除 12.outliers移除 13 最远点采样&#xf…

安全、高效的MySQL DDL解决方案

MySQL作为目前应用最广泛的开源关系型数据库&#xff0c;是许多网站、应用和商业产品的主要数据存储。在生产环境&#xff0c;线上数据库常常面临着持续的、不断变化的表结构修改&#xff08;DDL&#xff09;&#xff0c;如增加、更改、删除字段和索引等等。其中一些DDL操作在M…

Vue3中的混入(mixins)

本文主要介绍Vue3中的混入&#xff08;mixins&#xff09;。 目录 一、在普通写法中使用混入&#xff1a;二、在setup写法中使用混入&#xff1a; 混入是Vue中一种用于在组件中共享可复用功能的特性。在Vue 3中&#xff0c;混入的使用方式有所改变。 一、在普通写法中使用混入…

MongoDB安装部署

二、安装部署 2.1 下载 下载地址&#xff1a;MongoDB Enterprise Server Download | MongoDB 当前最新版本6.0.9&#xff0c;5.0.9对Mac m1需要centos 8.2版本。选择docker安装。 2.2 docker-ce安装 # 安装docker # 默认repo源没有docker-ce安装包&#xff0c;需要新的rep…

Station_Map1221Update

1221 Polish 1. Transfer the road coordinates from the UE coordinates system into the CAD coordinates system by using the functions in the file INDEX2UE.py Report Changes in the function initialMatrix # 初始化标签self.outdoor_label[self.wall_matrix 1] …

如何使用树莓派Bookworm系统中配置网络的新方法NetworkManager

树莓派在 10 月新出的 Bookworm 版本系统中&#xff0c;将使用多年的 dhcpcd 换成了 NetworkManager&#xff08;以前是在rasp-config中可选&#xff09;&#xff0c;这是因为 Raspberry Pi OS 使用的是 Debian 内核&#xff08;和 Ubuntu 一样&#xff09;&#xff0c;所以树莓…