首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用补丁包在本地修补NPM包,但不起作用。

用补丁包在本地修补NPM包,但不起作用。
EN

Stack Overflow用户
提问于 2020-10-23 10:52:28
回答 4查看 12.4K关注 0票数 6

我正在开发一个vue.js前端,我需要修补一个包,以满足应用程序的特殊需求。我试图修补的包是'vue-youtube‘(并不是说它真的很重要)。我试图用补丁程序包(https://www.npmjs.com/package/patch-package)来修补它。

所以基本上:

为了满足我的需要,我在本地编辑了npm install patch-package --save-dev

  • Then,在package.json中添加了postinstall脚本:npm install patch-package --save-dev

  • Then,运行,npx patch-package vue-youtube

  • It,在/patches文件夹中使用modifications

创建了一个vue-youtube+1.4.0.patch文件

但是,我的修改没有被看到。当我做npm run serve并启动我的webapp时,使用的包仍然是未经编辑的包。我以前试过运行npm install,但没有成功。当我进入/node_modules/vue-youtube/dist/vue-youtube.js时(谢天谢地,它是一个小包,因此它是可读的),我可以看到我的修改确实没有被“编译”。

我在这里错过了什么?我觉得我在修补程序包npm页面上跟踪了每一件事。

谢谢

编辑:仍在调查..。更多的信息/问题很少:

我的补丁名是patches/vue-youtube+1.4.0.patch

  • when --运行npm ls vue-youtube --它只返回一个元素:vue-youtube@1.4.0

  • in

  • package.json列出的依赖项是"vue-youtube": "^1.4.0",应该是不同的吗?它应该提到它需要修补吗?

编辑2 :我意识到我正在编辑的不是node_modules/vue-youtube/dist/vue-youtube.js,而是node_modules/vue-youtube/src/vue-youtube。如果编辑dist文件夹中的文件,则修补程序可以工作。(不过,我认为修补程序包将允许我以可读的JS.编辑src文件夹中的文件。)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-04-12 08:11:04

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

票数 8
EN

Stack Overflow用户

发布于 2022-01-20 08:58:20

在package.json中添加下面的npm脚本后,修补工作为我工作。

代码语言:javascript
复制
scripts:  {
  "prepare": "patch-package",
}

纱线文档中的线条说明了准备工作。

代码语言:javascript
复制
For compatibility reasons, scripts called install, postinstall, prepublish, and prepare will all be called after your package has finished installing.

在package.json中添加此脚本后,修补程序文件夹中模块文件的更改已修补到相应的节点模块中。

票数 2
EN

Stack Overflow用户

发布于 2022-04-27 13:51:34

我试着用一些包做同样的事情,让我们称之为"some_package“。当我看到编辑2时,我的脑子就把这些点连接起来.

测试本地更改

修改node_modules/some_package/src文件夹中的文件,然后转到node_modules/some_package并运行:

代码语言:javascript
复制
$ npm install
$ npm run <name of the script that generates the dist folder>

不需要运行npx patch-packagepostinstall步骤。

我认为这种方法并不适用于所有的包,它取决于如何配置修改后的包的package.json。具体来说,请注意browser字段指向的位置(在我的例子中是./dist/some_package.js)。

注意:每次对包进行更新时,都必须运行npm installnpm run

来测试更改,并能够在团队成员之间共享它(当包在Github上时)

  1. 生成要修改的包的分叉。
  2. 对包的分叉版本进行所有更改。
  3. 运行以下命令自动更新package.json文件,使依赖项指向您的分叉版本:

代码语言:javascript
复制
$ npm install <github's user name>/<package's name of the forked repository>#<branch name>  --save-prod

例如,如果您的Github的用户名是"johndoe",并且您在https://github.com/aurelia/framework上分叉,并且您创建了一个名为“my冷却枝”的分支,其中包含了您的更改,那么它将是:

代码语言:javascript
复制
$ npm install johndoe/aurelia-framework#mycoolbranch --save-prod

请注意,如果依赖项仅用于开发,则可以将--save-prod标志替换为--save-dev

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64498655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档