在angularjs中开发两个本地项目时(其中一个导入另一个),我只需运行" npm link"在模块B的文件夹中然后运行" npm link module-B"在我的主模块文件夹中,每当我更改模块B中的文件时,我都会直接在浏览器服务模块A中看到它。
但使用angular(4)似乎并不容易。
我使用ng-packagr生成一个dist文件夹 我在dist文件夹中运行npm链接 我在主模块的文件夹中运行npm link module-B 然后我运行服务--preserve-symlinks。
到目前为止,它可以理解模块B的组件。 但是,如果我尝试更改模块B中的某些内容,请重新运行ng-packagr,我的主要模块" s" ng serve"无法编译,我必须停止并启动ng服务。
我认为ng-packagr首先删除dist文件夹,这会触发ng服务中的重建失败,并且没有注意到删除dist文件夹后新创建的文件。
我们是否必须使用ng-packagr或是否有其他方式进行多项目本地开发。
更新:
如果我们在ng-packagr.js中注释掉这一部分,那么无论何时更改文件并运行ngpackagr,它都不会删除文件夹和浏览器更新:
return Promise.all([
/*rimraf_1.rimraf(p.dest),*/
rimraf_1.rimraf(p.workingDirectory)
]);
但是运行ng-packagr需要一些时间,具体取决于库的大小。因为它构建了整个事物而不仅仅是更改的文件。
答案 0 :(得分:4)
好的我觉得我搞定了。这种解决方案更直接,不使用ng-packagr。我做的是:
index.ts文件的确使导入保持不变,无论是从npm存储库获取模块还是在本地开发: 从" module-b";
导入{moduleB}我认为此解决方案仅适用于仅在"父容器中运行的组件",就像使用组件的项目一样。如果moduleB有,假设一个演示模块/页面,我认为必须分两步拆分它,首先将演示模块作为单独的npm项目和Child-npm-Project中的Component-module。