前端架构: 调试本地脚手架最佳实践梳理

脚手架本地调试标准流程


1 )链接本地脚手架

  • 就是当我们这个脚手架开发好还没上线的时候
  • 可以进入到脚手架的一个目录, 通过 npm link 完成这个操作
  • $ cd your-cli-dir
  • $ npm link
  • 这个操作的含义是将当前的项目链接到node全局的 node_modules 中作为一个库文件, 并且还会解析我们的bin配置, 去配置可执行文件
  • 通过 npm link 的时候, 它就会在当前 node 全局的依赖当中创建一个脚手架可执行文件并且指向自己本地脚手架项目配置的这个文件

2 )链接本地库文件

  • 首先来到当前的库文件,下面执行 npm link, 这时候得到一个全局的库文件名称
    • 在全局node_modules中会有一个软链指向当前库文件项目目录
    • 这个软链名称就是 库文件名称
    • $ cd your-lib-dir
    • $ npm link
    • 此时,当前的库文件就可在全局找到了,但是这个库在当前cli项目中并未存在
  • 然后来到脚手架cli目录执行 npm link 库文件名称
    • $ cd your-cli-dir
    • $ npm link your-lib
  • 这时,在当前项目内的 node_modules 当中创建一个 库文件的软链 指向全局 node_modules
  • 而我们知道,全局的 库文件 也是一个软链,指向本地正在开发调试的库文件项目
  • 这时候,两者就能串联起来了,注意,不要忘记在当前cli脚手架项目的依赖中,添加当前库文件的依赖和版本
  • 这时候,两者可以随时联动起来,随时修改,随时可以同步了

3 )取消链接本地库文件

  • 当需要模拟真实环境,也就是将要上线的时候,需要把本地的软链接全部解除
  • 首先,仍然是需要来到库文件的这个目录,执行 npm unlink
    • $ cd your-lib-dir
    • $ npm unlink
  • 这时,它会将当前这个项目从node的全局 node_modules 中移除, 这时候库文件的软链就不见了
  • 不存在意味着,我们的cli脚手架将无法使用这个库,再次执行脚手架cli命令将必然会因为找不到依赖而报错
  • 进入到我们的脚手架cli项目中,对已经失效的库文件同步进行解除链接
    • $ cd your-cli-dir
    • $ npm unlink your-lib
    • 这时候,仍旧会报错,因为先把库文件的软链从全局node_modules中取消了,所以这里因为找不到而报错
    • 这个报错可以忽略,执行后虽然报错了,但是将本地cli脚手架对于库文件的软链删除了
    • 其实,如果不想要这个报错,可以先执行取消本地cli对库文件的软链,再取消本地库文件在全局的软链
    • 也即是调整下两者执行的顺序,其实这个报错是可以忽略的,是无所谓的
    • 如果先在cli项目中unlink 库文件,则会发现,在cli项目的依赖配置中, 库文件的依赖也同步会删除
    • 如果配置文件中的依赖被这样删除了,后期还需要 npm i 库文件 -S 或者手动重新配置(这个就会修改源码了)
    • 所以,仍推荐保持目前这个顺序,主动让其在 unlink 时报错,免得后期遗漏或重新安装的麻烦
  • 如果这时候库文件已经发布上线了,可以
    • 先删除脚手架cli目录中的node_modules, 即 $ rm -rf node_modules
    • 之后,执行 npm i 重新安装
  • 通过这个标准流程可以顺利实现脚手架的调试与上线

link 和 unlink 的总结


1 ) npm link

  • npm link your-lib:将当前项目中 node modules 下指定的库文件链接到 node 全局 node_modules 下的库文件
  • npm link:将当前项目链接到 node全局 node modules 中作为一个库文件,并解析 bin配置创建可执行文件

2 )npm unlink

  • npm unlink: 将当前项目从 node 全 node_modules 中移除
  • npm unlink your-lib: 将当前项目中的库文件依赖移除

参考

  • https://blog.csdn.net/Tyro_java/article/details/136103930

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

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

相关文章

Spark编程实验五:Spark Structured Streaming编程

目录 一、目的与要求 二、实验内容 三、实验步骤 1、Syslog介绍 2、通过Socket传送Syslog到Spark 3、Syslog日志拆分为DateFrame 4、对Syslog进行查询 四、结果分析与实验体会 一、目的与要求 1、通过实验掌握Structured Streaming的基本编程方法; 2、掌握…

相机图像质量研究(17)常见问题总结:CMOS期间对成像的影响--靶面尺寸

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

【AIGC】Stable Diffusion的常见错误

Stable Diffusion 在使用过程中可能会遇到各种各样的错误。以下是一些常见的错误以及可能的解决方案: 模型加载错误:可能出现模型文件损坏或缺失的情况。解决方案包括重新下载模型文件,确保文件完整并放置在正确的位置。 依赖项错误&#x…

009集——磁盘详解——电脑数据如何存储在磁盘

很多人也知道数据能够保存是由于设备中有一个叫做「硬盘」的组件存在,但也有很多人不知道硬盘是怎样储存这些数据的。这里给大家讲讲其中的原理。 首先我们要明白的是,计算机中只有0和1,那么我们存入硬盘的数据,实际上也就是一堆0…

Python三级考试笔记

Python三级考试笔记【源源老师】 三级标准 一、 理解编码、数制的基本概念,并且会应用。 1. 能够进行二进制、十进制以及十六进制之间的转换; 2. 理解Python中的数制转换函数。 二、 掌握一维数据的表示和读写方法,能够编写程序处理一维数据…

阿里云幻兽帕鲁服务器手动更新游戏服务端的命令

幻兽帕鲁Windows服务器版手动更新命令: 首先打开服务器桌面的Windows PowerShell工具,找不到就左下角开始菜单,搜索即可。 然后输入下面的命令切换到这个目录: cd C:\steamcmd 接着运行下面的命令: .\steamcmd.ex…

MySQL性能调优篇(7)-MySQL的集群部署和优化

MySQL的集群部署和优化 MySQL是一种常用的关系型数据库管理系统,可以用于存储和管理大量的结构化数据。为了满足高并发和大规模数据存储需求,MySQL的集群部署和优化变得非常重要。本篇博客将介绍MySQL的集群部署方法和一些优化技巧。 一、MySQL集群部署…

2.15作业

1、选择题 1.1、有以下程序 int main() { char a[7]"a0\0a0\0";int i,j; isizeof(a); jstrlen(a); printf("%d %d\n",i,j); } //strlen求出字符串的长度,其实是字符串中字符的个数,不包括\0 程序运行后的输出结果是____C…

【C++】C++11上

C11上 1.C11简介2.统一的列表初始化2.1 {} 初始化2.2 initializer_list 3.变量类型推导3.1auto3.2decltype3.3nullptr 4.范围for循环5.final与override6.智能指针7. STL中一些变化8.右值引用和移动语义8.1左值引用和右值引用8.2左值引用与右值引用比较8.3右值引用使用场景和意义…

【算法设计与分析】搜索旋转排序数组

📝个人主页:五敷有你 🔥系列专栏:算法分析与设计 ⛺️稳中求进,晒太阳 题目 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k&#xff…

什么是“感知机”?

感知机(神经网络和支持向量机的理论基础) 概念:简单来说,感知机就是一个旨在建立一个线性超平面对线性可分的数据集进行分类的线性模型 分类: 单层感知机多层感知机( Multi-Layer Perceptron&#xff0c…

【lesson55】线程同步

线程同步 同步:在保证数据安全的前提下,让线程能够按照某种特定的顺序访问临界资源,从而有效避免饥饿问题,叫做同步 例一:我们之前的抢票代码,一个线程把票全抢完了,它错了吗?没错…

【springboot+vue项目(十六)】基于Oauth2的SSO单点登录(三)SpringSecurity+Jwt 整合Aouth2(客户端部分)

要将Spring Security与基于OAuth 2.0的第三方认证系统进行整合,你需要执行以下步骤: 配置Spring Security以使用OAuth 2.0: 添加依赖项:在项目的构建文件(如Maven的pom.xml)中添加适当的依赖项,…

top100-回溯算法专题

回溯算法和深度优先遍历 回溯法采用试错的思想,它尝试分布的去解决一个问题。在分布解决问题的过程中,当它通过尝试发现现有的分布答案不能得到有效的正确的解答的时候,它将取消上一步甚至上级不的计算,再通过其他的可能的分布解答…

Duilib 的WinMain函数学习

之前跑了一个基本例子;接下来准备再做一些; 看着它的WinMain函数里面,有几句不知道需不需要; 它是这样的;从别的示例里面来的; int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR /*lpCmdLine*/, int nCmdShow) {CPaintManagerUI::SetIn…

Qt Creator 继承分文件编写代码流程实现简单案列

Qt Creator 继承分文件流程实现简单案列 打开Qt Creator&#xff0c;新建c项目 添加类 完成之后&#xff0c;会自动生成.h和.cpp文件 一、animal.h文件 主要用来写类&#xff0c;包括成员变量和函数 #ifndef ANIMAL_H #define ANIMAL_H #include <iostream> #inclu…

高效货运 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 老李是货运公司承运人&#xff0c;老李的货车额定载货重量为wt&#xff1b;现有两种货物&#xff0c;货物A单件重量为wa&#xff0c;单件运费利润为pa&#xff0c…

【matalab】基于Octave的信号处理与滤波分析案例

一、基于Octave的信号处理与滤波分析案例 GNU Octave是一款开源软件&#xff0c;类似于MATLAB&#xff0c;广泛用于数值计算和信号处理。 一个简单的信号处理与滤波分析案例&#xff0c;说明如何在Octave中生成一个有噪声的信号&#xff0c;并设计一个滤波器来去除噪声。 首…

识别盐构造在预先确定造山带动力学和几何形态方面的重要性和控制作用

近几十年来&#xff0c;理解盐岩的变形已成为许多含盐褶皱冲断带中日益受到关注的研究课题。越来越多的研究指出&#xff0c;继承性正断层及与之相连的盐构造在预先确定造山带动力学和几何形态方面的重要性和控制作用&#xff08;例如&#xff0c;在北石灰岩阿尔卑斯地区有Gran…

从数字孪生到智慧城市:科技引领下的城市未来展望

一、引言 随着科技的飞速发展&#xff0c;数字孪生和智慧城市已成为当今世界城市发展的重要趋势。数字孪生通过建立物理世界的数字模型&#xff0c;为城市管理和规划提供了前所未有的可能性&#xff1b;而智慧城市则借助先进的信息通信技术&#xff0c;使城市运行更加高效、便…