来自Github的Angular模块,如何集成到我的模块中?

时间:2019-08-22 09:39:56

标签: angular angular8

摘要

我正在寻找有关如何将node_module的github-fork集成到我的项目中的说明,因此我可以对模块进行自己的修改,而无需触摸node_modules / xyz内的代码。

详细信息/示例/原因:

作为一个例子,我发现角度/ cdk拖放非常好,但是有缺陷。所以我需要更改node_modules/@angular/cdk/esm2015/drag-drop.js中的代码(我不想这样做)。
但也要密谋(https://github.com/plotly/angular-plotly.js)。

大多数情况下,就像cdk / drag-drop一样,有一个带有源代码的github存储库。当然,还有改变。在node_modules内部非常愚蠢,显然我更愿意分叉存储库,然后将我的分叉链接到package.json左右(?!)。

说...
我现在不知道
我找不到有关此主题的任何文档或博客。我想我一定选择了错误的关键字??!

我要问的问题

有人可以提供指向该页面的链接,该页面详细解释了此过程或至少总结了重要步骤吗?

到目前为止我在想什么...
将存储库相对于我的项目放在哪里,是否可以/必须位于并行文件夹中? 在我的主项目中,如何链接该新的git模块(是否在package.json中?) 每次更改后,我是否需要分别预编译该分支的git模块?哪些命令?还是有一种选择,以便我的主模块/项目在开发时也可以通过ng服务监视来编译每个更改?

2 个答案:

答案 0 :(得分:2)

解决方案非常简单。

分叉@angular/cdk并将其放置在/root/projects(或自行命名)。

现在在您的app.module.ts或将要使用的模块中,您将必须从DragDropModule而不是通常从/root/projects导入node_modules

import {DragDropModule} from 'projects/cdk-fork/drag-drop';

@NgModule({
  declarations: [
    ...
  ],
  imports: [
    DragDropModule
    ....
  ]
})
export class AppModule {
}

您可以将这种方法应用于您希望分叉和编辑的任何模块。

答案 1 :(得分:2)

您可以在Angular项目中使用多个选项来使用依赖项的派生:

如果您的叉子只能在本地使用

请检查@Dino's answer

在GitHub(或其他Git主机)上上传fork

  • 在您的package.json中,像这样导入分叉:"dependency": "git+https://github.com/your-username/your-git-repository.git"
  • 您的叉子将添加到node_modules目录
  • 请注意,您将必须先进行所有更改,然后再在项目中执行npm i

要详细了解如何将GitHub存储库作为依赖项导入,另请参阅the official npm documentation

在npm上上传货叉

  • sign up在npm创建一个帐户
  • 转到您的fork目录:cd fork-directory
  • 登录到npm:npm login
  • 初始化您的包裹:npm init
    • 检查您的软件包名称尚不存在:https://www.npmjs.com/package/your-package-name应该返回404错误
  • 发布您的软件包:npm publish
  • 在您的package.json中,导入fork:"your-package-name": "package-version"package-version是您的npm软件包的版本号)
  • 请注意,每次您对fork进行更改时,您都必须发布具有比以前更高的软件包版本号的新软件包版本,然后再次在项目中执行npm i

要了解如何发布npm软件包,还请阅读this blog postthe official npm documentation