【发布时间】: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文件夹)。 -
刚刚遇到同样的问题,只有文件夹是
lib和es我需要更改es文件并更新了错误的文件集。您的编辑 2 帮助我解决了这个问题,您应该将其添加为答案
标签: vue.js npm patch patch-package