Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';我是否可以构建一个引用内部Angular库的Angular应用程序?_Angular_Npm_Angular Cli_Node Modules - Fatal编程技术网

为什么可以';我是否可以构建一个引用内部Angular库的Angular应用程序?

为什么可以';我是否可以构建一个引用内部Angular库的Angular应用程序?,angular,npm,angular-cli,node-modules,Angular,Npm,Angular Cli,Node Modules,tl;博士ng build删除包含我编译的自定义库的/dist文件夹。这将使项目代码中对该库的所有引用无效,从而导致ng build最终失败。我做错了什么 我遵循并在现有项目中使用Angular CLI生成了一个库。我运行了ng build@mylib,然后npm install dist/@mylib。我的应用程序中的一两个模块从@mylib导入组件,就像它们从任何npm安装的模块导入组件一样(import{MyLibComponent}从“@mylib”;)但是,这些引用在我构建应用程序时就

tl;博士
ng build
删除包含我编译的自定义库的/dist文件夹。这将使项目代码中对该库的所有引用无效,从而导致
ng build
最终失败。我做错了什么

我遵循并在现有项目中使用Angular CLI生成了一个库。我运行了
ng build@mylib
,然后
npm install dist/@mylib
。我的应用程序中的一两个模块从@mylib导入组件,就像它们从任何npm安装的模块导入组件一样(
import{MyLibComponent}从“@mylib”;
)但是,这些引用在我构建应用程序时就会中断,因为
ng build
删除了/dist文件夹,其中包含已编译的@mylib


您可能认为/node_模块将包含编译后的文件,但实际上它只使用到有问题的/dist文件夹的虚拟链接。

库的输出路径应该位于
dist
文件夹中的一个单独文件夹中,而不是您的应用程序输出

我为此创建了一个示例,您可以在以下回购协议中找到它:

在上述情况下,在
angular.json
中,应用程序输出为
“outputPath”:“dist/my app”
,而
ng package.json
中的库输出为
“dest”:./../dist/my lib”
。要将库输出的源包含在应用程序中,需要在工作区的根
tsconfig.json
中进行以下配置:

"paths": {
  "my-lib": [
    "dist/my-lib"
  ],
  "my-lib/*": [
    "dist/my-lib/*"
  ]
}

这样,库输出不会被删除,它将直接包含在您的应用程序中。

为什么不在运行
npm install
之前移动
/dist
文件夹?@Woohoojin在新安装应用程序后,要求其他开发人员做的事情似乎很多,不是吗?哈哈什么<代码>ng构建-操作另一个文件夹/这是我认为可能需要的。我本以为CLI足够聪明,可以自己做类似的事情。当您让项目文件夹生成库时,它会自动在项目中创建项目文件夹。它还将相关配置添加到angular.json文件中。这就是为什么它会将库生成的输出放在应用程序的生成过程会删除它的位置,这令人惊讶。应用程序的文件夹结构揭示了我的问题。由于我将库添加到现有的应用程序中,因此我的结构的特点是应用程序代码位于projects文件夹之外,而lib代码位于该文件夹中。这就是为什么应用程序上的ng build删除了整个/dist文件夹并删除了lib的输出文件。