使用补丁程序包在本地修补NPM程序包,不起作用

时间:2020-10-23 10:52:28

标签: vue.js npm patch patch-package

我正在开发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
  • 它确实通过我的修改在vue-youtube+1.4.0.patch文件夹中创建了/patches文件

,看不到我的修改。当我执行npm run serve并启动我的Web应用程序时,使用的软件包仍然是未编辑的软件包。我之前尝试运行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。我以某种方式认为,修补后,源文件将被webpack重新编译到dist文件夹中。我在这里错了吗?我需要直接编辑/ dist /文件吗?

1 个答案:

答案 0 :(得分:2)

工作解决方案: 如果您直接在包的 Not at this location: "http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz" Trying 'http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.xz' 文件夹而不是 dist/ 文件夹中编辑文件,则补丁可以正常工作。