Pau*_*aul 5 npm npm-link angular angular-library angular7
我有两个角度库 NPM 包:
一些组件A-BC从A类似导入import { MyThing } from 'A';
A-BC的 package.json 是:
"peerDependencies": {
"A": 1.0.0,
"BC": 4.0.0
},
"devDependencies": {
"A": 1.0.0,
"BC": 4.0.0
}
Run Code Online (Sandbox Code Playgroud)
我尝试的开发步骤是:
npm link --only=production 在(内置版本) Anpm link --only=production 在(内置版本) A-BCmy-app,运行npm link A my-app,运行npm link A-BCmy-app找不到安装在任何地方my-app时编译失败。它们都作为符号链接文件夹正确地排列在彼此的旁边。我已经在启用和尝试过这个,但这没有帮助。A-BCAnode_modulespreserveSymlinkstsconfig.jsonangular.json
A可能是 的直接依赖A-BC,但是:
A并A-BC有一个forRoot()叫所需的包正常运行为它安装在我不知道的方式来传递的应用程序forRoot()从动态参数A-BC forRoot()的A forRoot()my-app需要使用来自AAND 的组件来自A-BC.A是直接依赖,我不知道我怎么会能够发展A-BC本地-这可能涉及改变着A-BC,偶尔A。目前我的创可贴解决方案是:
A作为测试版发布A-BC和 中安装测试版my-appA-BC到my-app通过npm linkA,如果需要进行更改,然后安装在my-app和A-BC再A通过 NPM 对本地文件的支持进行安装可能还有其他工作流程,但我不确定。
我假设您正在谈论的这两个包是使用 ngCli v6 创建的,或者您正在从现有的 ng 工作区合并它们,无论哪种方式,让我们尝试解决您的问题。
我假设您有如下所示的 ng 工作区结构
...
projects >
A
B
host
...
Run Code Online (Sandbox Code Playgroud)
其中 A 是一个库 B 是依赖于 A 的库,主机是使用 B 的应用程序。
当在 ng 工作区本地工作/开发 ng 包时,您应该将它们的别名添加到您的root tsconfig.json文件中,例如:
...
projects >
A
B
host
...
Run Code Online (Sandbox Code Playgroud)
当使用命令生成库时,CLI v7 中会自动完成此操作ng new lib {yourLibName}。
确保您拥有此配置后,我建议向您的 中添加一些脚本package.json,以便构建您的库并以更直接的方式为您的开发应用程序提供服务(host在示例中)
"build:a": "ng build A --watch=true",
"build:b": "ng build B --watch=true",
"serve:host": "ng serve host"
Run Code Online (Sandbox Code Playgroud)
之后,通过依次运行这三个脚本并从您的文件中导入适当的脚本libModules以及lib B从Host App内部导入适当的libModules脚本lib A,Lib B您将能够使用 的组件lib B,这些组件依赖于lib A内部的组件Host APP。
请记住,您不能在工作区中安装这两个库,因为这会破坏项目内的导入,而且这些库也不应该是您工作区的一部分package.json。
如果您已完成上述步骤,但问题仍未解决,请向我们提供 git 存储库的链接,或分享您的tsconfig.json, package.json,angular.json文件,以便我们继续调查。
因此,如果我收到您的案例,您希望能够开发这些packages 并将它们安装在一个 ng 工作区中。
如果是这种情况,据我所知,没有直接的方法可以做到这一点,也许您将能够通过调整您的tsconfig.json。
但在我看来,如果你想ng packages在同一个工作空间内使用它,你不一定需要推动它们,因为最终它们只是另一组ngModules将成为工作空间内的“一等公民”的人。您向其推荐的应用程序。因此,在为生产而构建时,它们将被进行 tree-shaking、最小化优化等。在这种情况下,您应该只扩展 中的部署脚本package.json,以便在开始构建依赖于这些的主应用程序之前npm/ng/packages构建该包。
"deploy": "ng build A && ng build B && ng build MainApp --production"
Run Code Online (Sandbox Code Playgroud)
同时,这些内容npm/ng/packages仍然可以npm发布,并且您将能够在其他工作区中使用它们。
请记住,它们不应属于同一工作区(正在开发它们的工作区)工作区package.json依赖项的一部分。
| 归档时间: |
|
| 查看次数: |
2530 次 |
| 最近记录: |