如何在模块Aimport模块B的地方开发两个angular模块

当在angularjs中开发两个本地项目(其中一个导入另一个)时,我只需要在模块B的文件夹中运行“npm link”,然后在主模块文件夹中运行“npm link module-B”,并且每当我更改模块BI会直接在我的浏览器服务模块A中看到它

但是angular度(4)似乎并不那么容易。

我使用ng-packagr来生成dist文件夹。
我在dist文件夹下运行npm链接。
我在主模块的文件夹中运行npm link module-B。
然后运行ng serve –preserve-symlinks。

到目前为止,它可以理解模块B的组件。但是,如果我尝试改变模块B中的东西,重新运行ng-packagr,我的主模块的“ng服务”不能编译,我必须停止并启动ng服务。

我认为,ng-packagr首先删除dist文件夹,这会触发在ng服务器中重build失败,并且不会注意到删除dist文件夹后新创build的文件。

我们是否需要使用ng-packagr或者是否有其他方式来进行多项目本地开发。

更新

如果我们在ng-packagr.js中注释掉这个部分,只要文件被改变并运行ngpackagr就不会删除文件夹和浏览器更新:

return Promise.all([ /*rimraf_1.rimraf(p.dest),*/ rimraf_1.rimraf(p.workingDirectory) ]);

但是运行ng-packagr需要一些时间,具体取决于库的大小。 由于它构build了整个事情,而不仅仅是文件的变化。

好吧,我觉得我的工作。 这个解决scheme感觉更直接,不使用ng-packagr。 我做的是:

  • 在模块BI中,将所有依赖的my @ angular-dependencies从dependency转移到peerDependencies。
  • 将index.ts添加到模块B的根文件夹中,其中包含:
    导出*从“./src/…/panel.module”
  • 从模块B的根文件夹运行“npm链接”
  • 从模块A的根文件夹运行“npm link module-B”
  • 运行服务 – 保留符号链接

index.ts文件可以确保导入保持不变,无论您是从npm存储库获取模块还是本地开发:
从“module-b”导入{moduleB};

我认为这个解决scheme只适用于只能在“父容器”中运行的组件,比如使用组件的项目。 如果moduleB有,可以说一个演示模块/页面,我认为必须分两步分解,首先演示模块作为一个独立的npm-project和一个Child-npm-Project中的Component-module。