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 ...
随机推荐
- [转]vcpkg+opencv4(sfm+vtk)+openMVS+SFM算法-github代下载(http://gitd.cc/)
1.vcpkg+opencv4(sfm+vtk)+openMVS+SFM算法-github代下载(http://gitd.cc/) 2.OpenMVS详细安装教程(ubuntu18.04) 3.ubu ...
- Ubuntu 20.04编译opencv-3.1.0时报错 error: 'CODEC_FLAG_GLOBAL_HEADER' was not declared in this scope
Ubuntu 20.04源码编译安装opencv320 报错 error: 'CODEC_FLAG_GLOBAL_HEADER' was not declared in this scope的解决办法 ...
- Unix和Windows操作系统中路径中的正斜杠和反斜杠的区别
- 巧技拾遗 | JavaScript 中 Array.every 和 Array.map 的巧妙结合
这几天在跟着学一点 vue3 + TypeScript 中表单验证的实例,看到一个实现,觉得非常巧妙. 需求概述 我们有一个列表 funcArr ,里面存放函数,比如 funcArr = [ func ...
- milvus基础
nlist和nprobe nlist 是调用 create_index 时设置的参数,nprobe 则是调用 search 时设置的参数. IVFLAT 和 SQ8 索引都是通过聚类算法把大量的向量划 ...
- WxPython跨平台开发框架之模块字段权限的管理
在我的很多Winform开发项目中,统一采用了权限管理模块来进行各种权限的控制,包括常规的功能权限(工具栏.按钮.菜单权限),另外还可以进行字段级别的字段权限控制,字段权限是我们在一些对权限要求比较严 ...
- Solution Set -「LOCAL」冲刺省选 Round XXVII
\(\mathscr{Summary}\) 还行,B 题挺不错,C 题就省选来说有点水(? \(\mathscr{Solution}\) \(\mathscr{A-}\) 分裂 初始时,你有一 ...
- runoob-android
https://www.runoob.com/android/android-tutorial.html https://www.runoob.com/w3cnote/android-tutorial ...
- PMP视频总结
https://edu.51cto.com/center/wejob/user/course?train_id=955 重要链接:①[PC端学习平台]:https://edu.51cto.com/ce ...
- w3cschool-MyBatis 教程
参考 https://www.w3cschool.cn/mybatis/mybatis-dyr53b5w.html MyBatis 入门 SqlSessionFactoryBuilder用 SqlSe ...