如何在我的 angular 6 应用程序中使用 angular material 的本地分支?

How can I use a local fork of angular material with my angular 6 app?

我想对 angular material2 源代码进行一些更改,并将它们反映在我的 angular 6 应用程序中。

目前,我的应用程序的 package.json 文件指定了以下内容:

“@angular/material”: “^6.4.3”

我已尝试将项目克隆到本地文件夹并更改我的应用程序 package.json,如下所示:

“@angular/material”:”file:../../material2”

但是当 运行 npm install 时,安装失败并出现各种目录丢失错误。

看来我做的事情完全错了,但对 npm 很陌生,我只是不知道是什么。

那么,如何在 angular 6 应用程序中使用 angular-material2 的本地分支?

很大程度上取决于您如何使本地分叉可用。它是作为节点包在某处发布的吗?分发版本是否存储在 git 存储库中?它只是源代码吗?

如果您只需要 "redirect" 您的应用程序指向本地目录而不是 node_modules 包,也许最简单的选择是使用 tsconfig.json 路径选项。类似于:

"compilerOptions": {
    "paths": {
        "@angular/material": [
            "fork/material2",
            "../node_modules/@angular/material"
        ]
    },
}

这设置了一个有序的层次结构,用于获取包的位置。不确定这是否已更改,但过去 Angular CLI 仅在路径是项目根目录的后代时才支持此路径。

另一种选择是调查 npm link。简而言之,这会将节点模块包替换为任何包名称 'linked' 。我发现将我的头脑集中在文档上有点棘手,但当我需要做你正在做的同样的事情时,它对我来说非常有效。