webpack 科学修改 node_modules 某个包的部分文件为本地文件
需求总是千变万化,npm 不是万能的,node_modules 里面的文件也是需要维护的。
如果 npm install 安装了某个包,然而这个包里面部分文件不支持你的需求,这时候怎么办?
比如:https://github.com/svg/svgo 此包可以批量处理 svg 文件,但是是 nodejs 运行环境,如何做到在浏览器端运行?如: https://tiny.jijian.link 这个浏览器端的图片压缩神器。
方法一
直接修改 node_modules 文件,当然你得记得改了些啥,否则下次 npm install 文件就会被覆盖。
方法二
使用 patch-package 修改,还是不够完美,需要额外安装 patch-package,还需要执行各种命令。
详细阅读: https://blog.jijian.link/2020-07-23/webpack-alter-file/
方法三
使用 webpack alias 实现替换文件。此方法仅适用于 webpack 维护的项目。
alias 作用基本都知道,设置路径别名,可使用短路引入文件。
其实 alias 作用不仅于此,还能作用于 node_modules 中的文件。
比如: svgo/lib/svgo/tools.js 中 require('fs') 在浏览器端会导致 fs not found 错误,我们需要修改里面的代码,让其不报错。
方法:
- 复制
svgo/lib/svgo/tools.js到项目任意位置,修改里面代码,记住此处项目位置。 - 修改 webpack 配置。
其中../lib/svgo/tools是svgo包里面的引用路径,src/svgo/lib/svgo/tools.js是修改后的文件路径。
1 chainWebpack: config => {
2 config.resolve.alias.set('../lib/svgo/tools', require('path').resolve(__dirname, 'src/svgo/lib/svgo/tools.js'));
3 return config;
4 },
总结
三种方法各有春秋,需根据需求选择。
webpack 科学修改 node_modules 某个包的部分文件为本地文件的更多相关文章
- 修改http请求文件为本地文件的一种方法:hook InternetReadFile 和 HttpOpenRequest
今天没事的时候学了一下easyhook来hook本进程API,确实很简单就能hook.然后想到这个问题:替换webbrowser请求的文件为本地文件.有什么用就不说了,都懂.因为没有用API写过htt ...
- VSCode代码修改后跑起来没反应,打开本地文件,代码没变化
两种解决办法: 首先:修改VSCode默认配置文件,点击左下角设置标志图 -> 设置,出来了设置相关的东西,搜索 files.autoSave 第一种:把"files.autoSave ...
- 如何修改 node_modules 里的文件
前言 有时候使用npm上的包,发现有bug,我们知道如何修改,但是别人可能一时半会没法更新,或者是我们特殊需求,别人不愿意修改,这时候我们只能自己动手丰衣足食.那么我们应该如何修改别人的源码呢?首先, ...
- 修改android应用包名 分类: android 学习笔记 2015-07-16 22:48 4人阅读 评论(0) 收藏
由于项目需要,要修改已经开发好的应用包名,这本身很简单,但是如果你没找到门道,可能会白白浪费许多时间. 修改包名有三个地方要改,这三个地方的修改一定要按顺序来,否则你可能会遇到许多不必要的麻烦. 1. ...
- 修改android应用包名
由于项目需要,要修改已经开发好的应用包名,这本身很简单,但是如果你没找到门道,可能会白白浪费许多时间. 修改包名有三个地方要改,这三个地方的修改一定要按顺序来,否则你可能会遇到许多不必要的麻烦. 1. ...
- 在用node安装某个全局模块的时候,没有权限修改node_modules
一.问题 今天在安装公司内部的一个npm模块的时候,发现报错了⬇ 第一行错误: deprecated graceful-fs@1.2.3: please upgrade to graceful-fs ...
- AndroidStudio修改程序的包名,可以修改com.example.xxx之类的详解
转载请说明出处.原创作品. 首先说明一下,当时公司需要修改androidStudio 项目的包名 于是上网查了一下,只看到了修改后面的包名,而不可以修改 前缀的com.example.xxx.所以很无 ...
- 如何将本地的jar包上传到maven本地仓库中
首先需要将本地的jar包做mvn install到本地仓库中 mvn install:install-file -Dfile=D:\skyeye-ruleInfo\lib\lucene-querypa ...
- 浅析PAC,教你动手修改你的PAC文件及user-rule文件实现自动代理
Shadowsocks作为现在一种很流行的穿墙工具,以其轻量级.速度感人等优点深受广大网友热捧.与VP_N相比,他就像一把锋利的”瑞士军刀”,不用受制于“系统全局代理”模式的困扰,控制更加便捷,基于S ...
- 【Eclipse】Eclipse中tomcat的Server配置(解决修改代码不断的重启服务器)以及设置tomcat文件发布位置与JSP编译位置查看
Eclipse有时候修改一点JS或者JSP都会自动重启,有时候修改完JS或者JSP之后必须重启服务器才生效,下面研究了server的一些选项之后彻底解决了这些问题,下面做记录: 我的 Eclipse ...
随机推荐
- Qt音视频开发11-通用监控布局控件(开源)
一.前言 自从做监控系统以来,就一直有打算将这个功能独立出来一个类,这样的话很多系统用到此类布局切换,通用这个类就行,而且后期此布局会增加其他异形布局,甚至按照16:9之类的比例生成布局,之前此功能直 ...
- Qt数据库应用17-通用数据库请求
一.前言 数据库请求是在数据库采集的基础上,换成http请求的形式来获取数据,这样就脱离了数据库组件,而采用的通用的http请求的形式从数据库拿数据库,这个通用性就非常广泛了,比如对方用java采集到 ...
- Windows10 64环境下用Qt5.12.12自带的mingw730_64构建编译OpenCV4.1.0时cmake-3.20.6中的参数配置
一.环境条件说明: 操作系统:Windows10 64环境 编译工具:用Qt5.12.12自带的mingw730_64构建 构建对象:编译OpenCV4.1.0的Release 64位和Debug 6 ...
- Error: Assertion failed (nimages > 0) in cv::calibrateCameraRO, file D:\opencv4\opencv\opencv-4.1.0\modules\calib3d\src\calibration.cpp, line 3691
报错信息: Error: Assertion failed (nimages > 0) in cv::calibrateCameraRO, file D:\opencv4\opencv\open ...
- opencv中 在特征点匹配代码举例,以及queryIdx和trainIdx的用法
一.用法 在特征点匹配中,queryIdx和trainIdx是匹配对中的两个索引,用于指示匹配点在不同图像或特征向量中的位置.1.假设我们有两幅图像A和B,并使用特征点提取算法(如SIFT)从它们中提 ...
- 百万架构师的第二课:设计模式:Spring 源码版本命名规则及下载安装
第二章--SpringWeb应用开发篇 二.Spring 源码版本命名规则及下载安装 2.1.Spring源码版本命名规则 (1) 首先看看某些常见软件的版本号: Linux Kernel: 0.0. ...
- pdf文件内容分析工具简介(研究pdf标准好帮手)
前言:PDF文件标准诞生于20年前,从今天的视角来看,标准设计理念有些过时了:然而,pdf文件生态已经形成,尾大不掉吧.纵然有各种缺点,但是不可否认的事实:pdf是当今应用最广泛的版式文件. pdf文 ...
- CDS标准视图:总计应收款 I_TotalAccountsReceivables
视图名称:总计应收款 I_TotalAccountsReceivables 视图类型:参数 视图代码: 点击查看代码 @AbapCatalog.sqlViewName: 'IFITOTALACCTRB ...
- WPFMediaKit --WPF项目中 调用摄像头拍照
<Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/200 ...
- Spring Security + Redis + JWT 实现动态权限管理【前后端分离】
本篇文章环境:Spring Boot + Mybatis + Spring Security + Redis + JWT 数据库设计Web 的安全控制一般分为两个部分,一个是认证,一个是授权.认证即判 ...