我正在尝试更新node_modules文件夹中的html,当我更改它时不会更新。是否无法更新node_modules中的文件?
我有一个导入弹出模块的项目
import {PopupModule} from 'ng2-opd-popup';
我需要能够更改此文件夹路径中存在的代码(/node_modules/ng2-opd-popup/components/popup/popup.component.html)
div id="ng2-opd-popup-main" *ngIf="visible" [ngClass]="mainClass" [ngStyle]="mainStyle">
<div class="row">
<div style="display: inline-block;width:100%">
<div id="ng2-opd-popup-well" [ngStyle]="wellStyle" class="ng2-opd-popup-well ng2-opd-popup-well-sm">{{popupService.options.header}}</div>
</div>
<div style="margin:20px;">
<ng-content></ng-content>
<div *ngIf="popupService.options.showButtons" style="margin-bottom:20px;margin-top:20px;float: right">
<div *ngIf="popupService.options.showConfirm">
<button id="confirmBtn" [ngClass]="confirmBtnStyle" (click)="confirmYes()">{{popupService.options.confirmBtnContent}}</button>
</div>
<div *ngIf="popupService.options.showCancel">
<button id="cancelBtn" [ngClass]="cancelBtnStyle" type="reset" (click)="confirmNo()">{{popupService.options.cancelBtnContent}}</button>
</div>
</div>
</div>
让我们说我想完全取消取消按钮。当我更改它并从我的项目中保存它时,即使html被更改,它也不会更新。
答案 0 :(得分:2)
好的,我在这里真的很茫然。我想要更改的包是
ng2-opd-popup
位于此处。我可以进入node_modules > components > popup
文件夹并修改html,但更改不会更新。 git位置只显示一个示例项目,而不是实际的节点模块。这只能通过NPM安装和查看。
请勿更改node_modules
中的任何内容。这不是你的代码。它的库代码。它的第三方代码。每当有人运行npm install
,或者重新克隆您的仓库,或者当仓库版本更新时,它都会被更换/更新。您甚至无法知道在运行时是否使用了特定文件;组件模板的HTML文件可能不是。包裹是一个黑盒子。根据库的打包方式,模板很可能在发布包之前在构建步骤中预编译。
在这种情况下,例如,TS已经预编译为JS,因此您对TS文件所做的任何更改都不会产生任何影响。当你说import {PopupComponent} from 'ng2-opd-popup';
时,你实际上正在导入一个JS文件。 HTML已经预编译并内嵌到popup.component.js
中 - 这是构建用于Angular的库时使用的典型方法。因此,您对popup.component.html
所做的任何更改都将被完全忽略。
如果开发人员有远见添加你想要的功能 - 隐藏取消按钮会很好 - 但是嘿,这就是生活。
由于没有这样的功能,然后消除按钮,你可以用CSS隐藏它。最好在src/styles.css
或src/styles.scss
中全局执行此操作,至少出于测试目的:在您使用此组件的组件的.css
文件中,或在全局范围内:< / p>
#cancelBtn { display: none; }
如果您真的想要对组件进行更广泛的自定义,那么在某些情况下,无法使用可用选项,CSS或可能的JS,那么请向开发人员请求它们。也许如果它们是其他用户可能想要的东西,它们将适应您。否则,作为最后的手段,你最终可能会做出所谓的“分叉”和“#34;存储库。这意味着制作您自己的整个仓库副本,您可以按原样编辑它,构建原始仓库的方式与原始仓库相同,通常使用npm run build
等命令,并保持与任何同步未来对原版的改动很容易。
答案 1 :(得分:1)
我不确定您所看到的问题到底是什么,您所做的更改应该是可见的。或者您使用的是webpack之类的内容,更改后它不会自动刷新吗?因为更改检测通常不会查看node_modules,所以在重新启动服务器之前,它不会选择它。
无论如何,你不应该更改node_modules中的任何内容 - 包不是要直接修改的。您应该尝试在软件包提供的功能范围内工作,找到一个能够满足您需求的不同功能,或者您是否感到野心勃勃,并修改原始代码。在这种情况下,看起来您可以使用第一个选项 - 它有一个showCancel
选项,所以请查看文档以了解如何设置它。