npm包的{Angular 2}编辑模板

时间:2017-06-28 12:34:41

标签: angular

我发现自己处于这样一种情况:我想要/必须编辑组件的模板,将npm导入的包导入我的angular2项目。

我知道在/ node_modules文件夹中编辑它是一个很大的'禁忌'。我将失去对'npm install'的所有编辑,或者我必须将整个/ node_modules文件夹添加到我的GIT项目中。

那我该如何应对这一挑战呢。

在java世界中,我会扩展类,添加和/或覆盖内容,并在需要的地方使用我自己的“子”类。

但角度2组件模板怎么样?...

编辑:

澄清我的评论@lexith

如果您使用Angular2,您应该知道组件模板是什么。具有相同名称但扩展名为.HTML的文件。现在,如果我通过npm添加一个组件(例如:ng-bootstrap,ngx-uploader ....),我需要编辑一下模板或行为(.ts文件),应如何解决这种问题挑战。

我可以提供代码和特定的包名,但这有什么用呢?有了这个问题,我试着理解这个概念并在几种情况下实现它。

EDIT2:

我发现了一个类似的问题here on SO。我想我会在那里实施解决方案。

  

Fork =>编辑=> Push =>导入(来自我的git fork).`

但是,为了重新安排一些HTML标签,屁股真是太痛苦了。这是通往罗马的唯一途径吗?

1 个答案:

答案 0 :(得分:1)

正如你在编辑你的问题时所说:是的,打开一个新的git repo只是为了进行一些更改并从那里拉出来......这绝对没有多大意义。如果您的更改仅影响您当前的项目,则不会。但一般的方法基本上是正确的。我只是不会使用git:

拉包一次(但不要将其保存为依赖项)进行更改并创建.tgz文件。将此文件放在项目的某个位置(例如node_modules_static)并在package.json中引用它,如下所示:

dependencies": {
    "my-manipulated-module": "file:./node_modules_static/my-manipulated-module.tgz"
}

当然,在生产环境中,您可能/可能会在您可以访问的服务器上的某个位置托管此软件包,在那里管理您的版本,可能会更新/调整它,而无需每次都触摸您的特定项目。

现在,有些人可能会争辩说原始模块可能会更新并且更改不会反映在您的项目中,因为您正在使用自己的副本......但实际上没有办法无论如何,在一个巨大的项目中处理自我更新的模块,特别是如果你对它们进行了更改。

当然,如果我们要谈论仅限javascript的更改,你总是可以创建一个扩展,它会覆盖模块的某些部分,但是对于模板,我可能会使用它。