gpt4 book ai didi

node.js - 如何在模块 A 导入模块 B 的地方开发两个 Angular 模块

转载 作者:太空狗 更新时间:2023-10-29 18:19:37 27 4
gpt4 key购买 nike

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

但使用 angular(4) 似乎并不那么容易。

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

到目前为止一切顺利,它可以理解模块B的组件。但是,如果我尝试更改模块 B 中的某些内容,重新运行 ng-packagr,我的主模块的“ng serve”无法编译,我必须停止并启动 ng serve。

我认为 ng-packagr 首先删除 dist 文件夹,这会触发 ng serve 中的重建失败,并且不会注意到删除 dist 文件夹后出现的新创建的文件。

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

更新:

如果我们在 ng-packagr.js 中注释掉此部分,它不会删除该文件夹,并且每当文件更改和运行 ngpackagr 时浏览器都会更新:

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

但是运行 ng-packagr 需要一些时间,具体取决于库的大小。因为它构建了整个东西,而不仅仅是被更改的文件。

最佳答案

好的,我想我成功了。这个解决方案感觉更直接,并且不使用 ng-packagr。我所做的是:

  • 在模块 B 中,我将所有 @angular-dependencies 从 dependencies 移到了 peerDependencies。
  • 将 index.ts 添加到模块 B 的根文件夹中,其中包含:
    从“./src/.../panel.module”导出 *
  • 从模块 B 的根文件夹运行“npm link”
  • 从模块 A 的根文件夹运行“npm link module-B”
  • 运行 ng serve --preserve-symlinks

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

我认为此解决方案仅适用于仅在“父容器”中运行的组件,例如使用该组件的项目。如果 moduleB 有,比如说一个演示模块/页面,我认为必须分两步将其分开,首先是演示模块作为一个单独的 npm 项目,然后是 Child-npm 项目中的组件模块。

关于node.js - 如何在模块 A 导入模块 B 的地方开发两个 Angular 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46809276/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com