【问题标题】:Is it possible to check if an Angular library is available at runtime?是否可以在运行时检查 Angular 库是否可用?
【发布时间】:2020-11-04 22:54:27
【问题描述】:

我正在创建一个Angular library - 我们称之为 libA - 它可以使用另一个 Angular 库 - 我们称之为 libB - 作为一个可选功能,即,如果Angular application 没有 libBlibA 中的功能将被禁用。但是,如果 Angular 应用安装了 libB,则 libA 中的功能将可用。

因此,要实现此行为,我必须在 libA 中进行验证,以检查 libB 是否可用。但是,我无法验证 libB 是否安装在应用程序中。

有谁知道我如何检查 libB 是否安装在 libA 内的应用程序中?

【问题讨论】:

标签: angular typescript


【解决方案1】:

projects/libA/package.json

{
    "name": "libA",
    "version": "0.0.0",
    "peerDependencies": {
        "libB": "0.0.0",
    },
    "dependencies": {
        "tslib": "^2.0.0"
    },
    "publishConfig": {
        "registry": "http://192.168.10.20:4873"
    }

}

主包配置见(示例):How to setup angular project as a dependency in package.json of another angular project

我的解决方案是 (IP就是一个例子)

我在一个 Linux VM(也存在 docker)上运行自己的注册表(例如:https://verdaccio.org/)并将我的包上传到其中。 每套套装:

{
    "name": "@my-name/package-name",
    "version": "0.0.0",
    "peerDependencies": {
       ...
    },
    "dependencies": {
        "tslib": "^2.0.0"
    },
    "publishConfig": {
        "registry": "http://192.168.10.20:4873"
    }
}
$ ng build <package-name>
$ cd /path/to/dist/package-name
$ npm publish

在 Angular 项目中

$ npm login --scope=@my-name --registry=http://192.168.10.20:4873/
$ npm install @my-name/package-name

(我使用了很多配置来设置注册表,所以可能登录不够。我没有跟踪它。:D)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 2017-02-16
    相关资源
    最近更新 更多