我有一个主应用程序和一些独立的库(不是主应用程序的一部分(。现在,当我开发一个库时,我会在主应用程序的package.json中包含.tgz。问题是,我必须首先构建/打包库,然后为主应用程序提供服务以查看更改。
有没有一种方法可以在观看图书馆变化的同时为主应用程序提供服务?我知道我可以构建——观察库,但我仍然需要打包才能获得.tgz
知道吗?Thx
npm提供了一个link
命令,可用于将本地库应用程序链接到主应用程序。
只需按照以下步骤链接您的本地图书馆。
-
打开库应用程序并导航到
dist/<your_lib>
文件夹。确保你的构建在观察模式下运行,这样你的主应用程序就可以随时接收更改。 -
运行命令
npm link
。 -
打开主应用程序并在根目录
npm link <lib_app_name>
上运行以下命令。 -
打开主应用程序的angular.json。在
architect -> build -> options
下,添加此属性"preserveSymlinks": true
。 -
现在,在主应用程序的app.module.ts中添加lib应用程序模块,并开始使用lib应用程序组件/服务。
-
像往常一样使用
ng serve
构建和服务您的应用程序。您的应用程序现在应该与库应用程序组件/服务没有任何错误。
如果你想知道这是如何工作的,npm link
会创建一个指向你的lib应用程序的符号链接,让你的主应用程序认为npm已经在node_modules中安装了你的lib程序。有关更多信息,请参阅官方文档
您可以在tsconfig.json
中添加一个指向库中主导出文件的路径;
"compilerOptions": {
"paths": {
"my-library": ["path/to/the/librarys/index.ts"]
}
}