多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[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)