# 调试第三方库的骚操作

如何科学修改第三方库的bug或功能,并在本地调试,接下来以修改async为例

# 方式一

使用webpack的alias功能

  1. 新建一个vue项目
  2. npm install async
  3. 复制node_modules/async/apply.jssrc/assets/apply.js
  4. src/assets/apply.js文件中加入一行 console.log('applyjs', '我被改了')
  5. src/main.js中写入 var async = require('async/index'); 注意这里的引入方式
  6. 接着配置vue.config.js为如下内容
const path = require('path');
module.exports = {
  chainWebpack: config => {
    config.resolve.alias
      .set('./apply', path.resolve(__dirname, 'src/assets/apply.js'))
  }
};
1
2
3
4
5
6
7

# 方式二

使用 patch-package调试修改

  1. 安装patch-package:npm i patch-package --save-dev
  2. 修改package.json,新增命令postinstall:
"scripts": {
  "postinstall": "patch-package"
}
1
2
3
  1. 修改node_modules里面的代码
  2. 执行命令:npx patch-package async
  3. 第一次使用patch-package会在项目根目录生成patches文件夹,里面有修改过的文件diff记录patches/async+2.6.3.patch
  4. 卸载async包 : npm un async
  5. 重新安装async: npm i async@v2.6.3
  6. 执行git apply --ignore-whitespace patches/async+2.6.3.patch即可。其中async+2.6.3.patch是它生成的文件名。