IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 三方包依赖node版本过高,构建失败解决方案 -> 正文阅读

[JavaScript知识库]三方包依赖node版本过高,构建失败解决方案

前言

前端生态众多,开发中会用到各种各样的三方包。但是构建平台往往是统一的node版本,如果遇到构建机node版本太低,而某些三方包语法报错、或者某些三方库有bug的情况怎么办呢?

解决方案

1.升级构建环境的node版本

这种方式是彻底的解决方案,但是需要的成本比较高,可维护性也不高,所以一般有规模的生产环境一般不会这么干。

2.降低三方包版本

这是一种常见的解决方案,不过其过程非常劳民伤财,得找资料、多次尝试等,而且得牺牲很多高版本带来的特性,贸然降低版本有可能会造成其他问题。

3.通过patch-package来hack

这是一个工具包,用来hack本地node_modules中的内容,在每次下载npm包后,该工具又自动去修改其内容从而达到定点hack。这种方式是一种临时解决方案,在构建机版本未升级前,作为权宜之计是非常合适的。

patch-package使用方式

其官方地址:ds300/patch-package: Fix broken node modules instantly 🏃🏽?♀?💨

介绍一下使用方式:

首先安装它npm i patch-package,然后给package.json中的script添加postinstall生命周期:

 "scripts": {
+  "postinstall": "patch-package"
 }

接下来可以修改本地node_modules中某个some-package中需要改动的内容,然后npx patch-package some-package 这个包。
再提交即可。

# 修改自己的三方包依赖内容
vim node_modules/some-package/brokenFile.js

# 执行命令,会在根目录patches文件下生成diff内容
npx patch-package some-package

# 提交即可,这样其他人下载后通过postinstall完成同步修改
git add patches/some-package+3.14.15.patch
git commit -m "fix brokenFile.js in some-package"

你会发现工程根目录有个patches文件,这里记录了你修改node_modules的改动记录。

需要注意的是,部分构建平台基于docker,设置了root权限,故而想要postinstall生命周期生成启动,需要在.npmrc中设置:

unsafe-perm = true

原理介绍

开发者在修改了本地node_modules后执行npx patch-package some-package,就是将修改的diff记录到根目录的patches文件夹下。

postinstall生命周期是npm自带的在npm install后执行的,故而在这个阶段,patch-package会把自己记录到patches的diff改动,修改到当前的node_modules中,完成hack。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-08 18:57:17  更:2022-06-08 19:00:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:34:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码