[TOC]
# 修改 node_modules 某个包
## 使用 patch-package 修改
使用 [patch-package](https://www.npmjs.com/package/patch-package) 修改,还是不够完美,需要额外安装 `patch-package`,还需要执行各种命令。
> [https://blog.jijian.link/2020-07-23/webpack-alter-file/](https://blog.jijian.link/2020-07-23/webpack-alter-file/)
## 使用 `webpack alias` 实现替换文件
此方法仅适用于 webpack 维护的项目。
[resolve_alias](https://webpack.js.org/configuration/resolve/#resolvealias) 作用基本都知道,设置路径别名,可使用短路引入文件。
其实`alias`作用不仅于此,还能作用于 node_modules 中的文件。
比如: `svgo/lib/svgo/tools.js` 中 `require('fs')` 在浏览器端会导致 fs not found 错误,我们需要修改里面的代码,让其不报错。
方法:
1. 复制 `svgo/lib/svgo/tools.js` 到项目任意位置,修改里面代码,记住此处项目位置。
2. 修改 webpack 配置。
其中 `../lib/svgo/tools` 是 `svgo` 包里面的引用路径,`src/svgo/lib/svgo/tools.js` 是修改后的文件路径。
~~~
chainWebpack: config => {
config.resolve.alias.set('../lib/svgo/tools', require('path').resolve(__dirname, 'src/svgo/lib/svgo/tools.js'));
return config;
},
~~~
## 修改 npm 包到自己的私有库
肯定是 clone 一份到GitHub 啦,保存一份修改后的 npm 包到自己的私有库。(当然 gitlab 也是可以的,需要 personal access token 的方式)
1. npm 安装 git 仓库的方式
```
npm i <git remote url>
```
例如
```
npm install github:mygithubuser/myproject
```
2. 把 package.json 的版本地址改成自己 github 上的
```
"dependencies": {
"vue-formxxx": "github:toyobayashi/asar-class-api",
}
```
> [如何修改 npm 包源码后,重新 npm 包的时候能是修改后的版本](https://www.cnblogs.com/shuen/p/12909128.html)
> [webpack 科学修改 node_modules 某个包的部分文件为本地文件](https://www.cnblogs.com/linx/p/13367570.html)
- 讲解 Markdown
- 示例
- SVN
- Git笔记
- github 相关
- DESIGNER'S GUIDE TO DPI
- JS 模块化
- CommonJS、AMD、CMD、UMD、ES6
- AMD
- RequrieJS
- r.js
- 模块化打包
- 学习Chrome DevTools
- chrome://inspect
- Chrome DevTools 之 Elements
- Chrome DevTools 之 Console
- Chrome DevTools 之 Sources
- Chrome DevTools 之 Network
- Chrome DevTools 之 Memory
- Chrome DevTools 之 Performance
- Chrome DevTools 之 Resources
- Chrome DevTools 之 Security
- Chrome DevTools 之 Audits
- 技巧
- Node.js
- 基础知识
- package.json 详解
- corepack
- npm
- yarn
- pnpm
- yalc
- 库处理
- Babel
- 相关库
- 转译基础
- 插件
- AST
- Rollup
- 基础
- 插件
- Webpack
- 详解配置
- 实现 loader
- webpack 进阶
- plugin 用法
- 辅助工具
- 解答疑惑
- 开发工具集合
- 花样百出的打包工具
- 纷杂的构建系统
- monorepo
- 前端工作流
- 爬虫
- 测试篇
- 综合
- Jest
- playwright
- Puppeteer
- cypress
- webdriverIO
- TestCafe
- 其他
- 工程开发
- gulp篇
- Building With Gulp
- Sass篇
- PostCSS篇
- combo服务
- 编码规范检查
- 前端优化
- 优化策略
- 高性能HTML5
- 浏览器端性能
- 前后端分离篇
- 分离部署
- API 文档框架
- 项目开发环境
- 基于 JWT 的 Token 认证
- 扯皮时间
- 持续集成及后续服务
- 静态服务器搭建
- mock与调试
- browserslist
- Project Starter
- Docker
- 文档网站生成
- ddd