【问题标题】:Patching a NPM package locally with patch-package, not working使用补丁包在本地修补 NPM 包,不起作用
【发布时间】:2021-02-06 10:32:28
【问题描述】:

我正在开发一个 vue.js 前端,我需要修补一个包以满足应用程序的特殊需求。我要修补的软件包是'vue-youtube'(这并不重要)。我正在尝试使用补丁包 (https://www.npmjs.com/package/patch-package) 对其进行修补

所以基本上:

  • 我在本地编辑了 /node_modules/vue-youtube/src/vue-youtube.js 以满足我的需要
  • 我确实在 package.json 中添加了安装后脚本:"scripts": { "postinstall": "patch-package" }
  • 我做了npm install patch-package --save-dev
  • 然后我跑了npx patch-package vue-youtube
  • 它使用我的修改在/patches 文件夹中创建了一个vue-youtube+1.4.0.patch 文件

但是,没有看到我的修改。当我执行npm run serve 并启动我的网络应用程序时,使用的包仍然是未编辑的包。我之前尝试过运行npm install,但没有成功。当我转到/node_modules/vue-youtube/dist/vue-youtube.js 时(幸好它是一个小包,所以它是可读的),我可以看到我的修改确实没有“编译”。

我在这里缺少什么?我觉得我已经关注了补丁包 npm 页面中的所有内容..

谢谢

编辑:仍在调查.. 更多信息/问题:

  • 我的补丁名称是patches/vue-youtube+1.4.0.patch
  • 当我运行npm ls vue-youtube 时,它只返回一个元素:vue-youtube@1.4.0
  • 在我的package.json 中列出的依赖项是"vue-youtube": "^1.4.0",它应该不同吗?它应该提到它需要修补吗?

编辑 2: 我意识到我不是在编辑 node_modules/vue-youtube/dist/vue-youtube.js,而是在编辑 node_modules/vue-youtube/src/vue-youtube。 如果您编辑 dist 文件夹中的文件,则补丁可以工作。 (但是我认为 patch-package 可以让我编辑 src 文件夹中的文件,用可读的 JS ......)

【问题讨论】:

  • 你描述的应该可以。你还记得提交patches 目录吗?或者您的 node_modules 中安装了多个 vue-youtube 版本,并且它使用的版本与您修补的版本不同? (你可以npm ls vue-youtube查看已安装的版本。)
  • @Trott,好吧,我没有提交我的更改,因为我想在之前正确测试它们,并且我在本地工作时不需要它? (我在本地编辑我的文件,然后使用 npm run serve 在本地测试我的 vue.js 应用程序)。以防万一,我尝试提交补丁目录,但它并没有改变行为。我用更多信息编辑了我的消息(package.json问题?)。谢谢你的帮助!
  • 我面临同样的问题。有消息吗?
  • @MoniqueAltero,我在 Edit2 中注意到的是,当我编辑包的 dist 文件夹中的文件时,它确实可以工作。我提交了我的补丁,每次有人在某处拉取并部署应用程序时,补丁确实应用于dist 中的文件。这适用于我的情况,因为即使在 dist 文件夹中,vue-youtube 包也很小且易于理解。不过不知道是不是patch-package的正常行为(不要从src文件夹构建包,只打dist文件夹)。
  • 刚刚遇到同样的问题,只有文件夹是 libes 我需要更改 es 文件并更新了错误的文件集。您的编辑 2 帮助我解决了这个问题,您应该将其添加为答案

标签: vue.js npm patch patch-package


【解决方案1】:

工作解决方案: 如果您直接在包的dist/ 文件夹中而不是src/ 文件夹中编辑文件,则补丁可以正常工作。

【讨论】:

  • 谢谢你!在研究了 2 个小时并尝试了不同的方法、fork-clone、从自己的 repo 安装......等等之后,让我免于中风。是的,再次感谢您
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
  • 2015-05-21
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多