我正在开发一个vue.js前端,我需要修补一个包,以满足应用程序的特殊需求。我试图修补的包是'vue-youtube‘(并不是说它真的很重要)。我试图用补丁程序包(https://www.npmjs.com/package/patch-package)来修补它。
所以基本上:
为了满足我的需要,我在本地编辑了npm install patch-package --save-dev
npm install patch-package --save-dev
npx patch-package vue-youtube
/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
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文件夹中的文件,则修补程序可以工作。(不过,我认为修补程序包将允许我以可读的JS.编辑src文件夹中的文件。)
发布于 2021-04-12 08:11:04
工作解决方案:如果您直接编辑包的dist/文件夹中的文件,而不是src/文件夹,则修补程序可以正常工作。
发布于 2022-01-20 08:58:20
在package.json中添加下面的npm脚本后,修补工作为我工作。
scripts: {
"prepare": "patch-package",
}纱线文档中的线条说明了准备工作。
For compatibility reasons, scripts called install, postinstall, prepublish, and prepare will all be called after your package has finished installing.在package.json中添加此脚本后,修补程序文件夹中模块文件的更改已修补到相应的节点模块中。
发布于 2022-04-27 13:51:34
我试着用一些包做同样的事情,让我们称之为"some_package“。当我看到编辑2时,我的脑子就把这些点连接起来.
测试本地更改
修改node_modules/some_package/src文件夹中的文件,然后转到node_modules/some_package并运行:
$ npm install
$ npm run <name of the script that generates the dist folder>不需要运行npx patch-package或postinstall步骤。
我认为这种方法并不适用于所有的包,它取决于如何配置修改后的包的package.json。具体来说,请注意browser字段指向的位置(在我的例子中是./dist/some_package.js)。
注意:每次对包进行更新时,都必须运行npm install和npm run。
来测试更改,并能够在团队成员之间共享它(当包在Github上时)
$ 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冷却枝”的分支,其中包含了您的更改,那么它将是:
$ npm install johndoe/aurelia-framework#mycoolbranch --save-prod请注意,如果依赖项仅用于开发,则可以将--save-prod标志替换为--save-dev。
https://stackoverflow.com/questions/64498655
复制相似问题