美文网首页
如何优雅的修改项目中node_modules源码

如何优雅的修改项目中node_modules源码

作者: 杀死BUG | 来源:发表于2020-11-20 15:48 被阅读0次

fork方式

流程

  1. github上fork此代码
  2. 修正问题
  3. 提交pull request (可省略,但是有必要)
  4. npm i git+https://github.com/项目地址.git#分支名称

问题

  1. 多个包依赖被fork的包有几率安装的不是你的包
  2. github国内访问很慢
  3. 效率有点慢

优点

  1. 修改包的话,本地代码不用调整,项目很干净

postinstall原生方式

流程

  1. 手动把修改完的文件复制到一个目录比如postinstall
  2. postinstall/index.js写入覆盖文件脚本
const shell = require('shelljs');
const baseDir = __dirname;
shell.cp('-f', baseDir + '/pomelo/starter.js', baseDir + '/../node_modules/pomelo/lib/master/');
  1. package.json加入执行脚本
"scripts": {
    "postinstall": "node postinstall"
  },
  1. 代码检查目录比如.eslintignore加入**/postinstall/*

问题

  1. 如果修改文件多的话,本地会保存一堆js文件,项目工程变大比较快

优点

  1. 简单粗暴,方便魔改代码

开源包patch-package

流程

  1. 安装 npm i patch-package
  2. 在 node_modules 修改你的文件
  3. 运行 npx patch-package package-name为node_modules包的名字。等待之后就会在根目录生成 patches 文件
  4. git关联上传即可
  5. package.json加入执行脚本
"scripts": {
    "postinstall": "npx patch-package"
  },
  1. 在根目录添加一个 .npmrc 文件,内容为 unsafe-perm = true 注入环境变量,等效于所有指令都加了--unsafe-perm关于unsafe-perm 官方文档解释

问题

  1. 代码跟踪起来比较麻烦

优点

  1. 相对postinstall原生方式项目大小变更较慢
  2. 快速方便,工业化

补充

cannot run in wd同root账号postinstall不能执行问题

  1. package.json
  "config": {
    "unsafe-perm": true
  },
  1. 方式一:写脚本npm-install.sh代替无脑npm i,统一sh npm-install.sh
npm install --unsafe-perm

2.方式二:在根目录添加一个 .npmrc 文件,内容为 unsafe-perm = true 注入环境变量,等效于所有指令都加了--unsafe-perm关于unsafe-perm 官方文档解释

patch-package: command not found问题

"postinstall": "npx patch-package"

后续

  • 一切都有局限性,一旦你要更新的package需要更新package.json很无解

相关文章

网友评论

      本文标题:如何优雅的修改项目中node_modules源码

      本文链接:https://www.haomeiwen.com/subject/byndiktx.html