[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