如何将第三方依赖项添加到typescript引用项目中



我有三个typescript项目,它们都引用了一个"核心"模块。

project-a
project-b
project-c
core

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

core/src/logger/index.ts

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

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

  • 将此文件移动到一个全新的typescript项目中
  • project-aproject-b中的引用
  • winston添加到依赖项并照常安装npm i -S winston
  • project-a上运行tsc-b

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

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

当你初始化你的核心代码时,你可以有选择地传入一个类型,实现一些";CCD_ 8";接口(您可以定义它(,然后在项目a和-b中,您可以传入一个类等,该类实现winston记录器。在project-c中,您根本不传入任何记录器,因此核心不会使用它

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

然而,根据您的设置,树抖动可能会消除project-c中的额外依赖项,因此您可能会保持原样。

最新更新