首页 > 解决方案 > 如何将第三方依赖项添加到打字稿参考项目

问题描述

我有三个打字稿项目,它们都引用了一个“核心”模块。

project-a
project-b
project-c
core

我想添加一些依赖第三方依赖的实用程序。这可以是 express 中间件、winston 记录器等。例如,默认的 winston 记录器。所以在里面core,我可能有

核心/src/logger/index.ts

import winston from 'winston'
export default winston.createLogger()

此文件由project-aproject-b引用,但不是project-c。如何以适应这种情况的方式设置我的核心项目?我在考虑以下步骤:

这会是理想的方式吗?我将向共享代码添加第三方引用,但无法强制安装类似于peerDependencies在 node.js 中的依赖项。

标签: node.jstypescriptwebpack

解决方案


有很多方法可以实现这一点,但最简单的方法之一可能是依赖注入

当你初始化你的核心代码时,你可以选择传入一个实现了一些“ Logger”接口(你可以定义)的类型,然后在 project-a 和 -b 中你可以传入一个实现winston记录器的类等。在 project-c 中,您根本不传递任何记录器,因此核心不会使用它。

在这种情况下,您的核心项目不会直接引用winston。只有项目 -a 和 -b 会拥有它,而 project-c 将没有不必要的依赖。

但是,根据您的设置,摇树可能会消除 project-c 中的额外依赖项,因此您可能会很好。


推荐阅读