Pact-node 依赖项非常大,有什么办法可以减小它的大小?

Pact-node dependencies are very large, any way to reduce the size?

我们已经使用 pact 为我们的 Angular JS 前端和 java 后端实施了契约测试。

我注意到 node_modules/@pact-foundation 目录非常大(pact-node v 4.3.2)

du -sh node_modules/@pact-foundation/
741M    node_modules/@pact-foundation/

JS UI 始终只是消费者,但依赖项似乎需要以下内容

ls node_modules/@pact-foundation/
pact-mock-service            pact-node               pact-provider-verifier-linux-x64
pact-mock-service-linux-x64  pact-provider-verifier

有什么方法可以引入更小的依赖集吗?

编辑 - 原因如下

du -sh pact-node/node_modules/@pact-foundation/pact-mock-service/build/*
1.9M    pact-node/node_modules/@pact-foundation/pact-mock-service/build/pact-mock_service-0.8.2
8.9M    pact-node/node_modules/@pact-foundation/pact-mock-service/build/pact-mock-service-0.8.2-1-linux-x86_64.tar.gz
8.5M    pact-node/node_modules/@pact-foundation/pact-mock-service/build/pact-mock-service-0.8.2-1-linux-x86.tar.gz
9.2M    pact-node/node_modules/@pact-foundation/pact-mock-service/build/pact-mock-service-0.8.2-1-osx.tar.gz
12M    pact-node/node_modules/@pact-foundation/pact-mock-service/build/pact-mock-service-0.8.2-1-win32.zip
50M    pact-node/node_modules/@pact-foundation/pact-mock-service/build/pact-mock-service-darwin
48M    pact-node/node_modules/@pact-foundation/pact-mock-service/build/pact-mock-service-linux-ia32
50M    pact-node/node_modules/@pact-foundation/pact-mock-service/build/pact-mock-service-linux-x64
51M    pact-node/node_modules/@pact-foundation/pact-mock-service/build/pact-mock-service-win32

pact-node 依赖于 pact-mock-service 并且捆绑的依赖项包括所有操作系统的模拟服务。

编辑 2 -

将我的依赖项更改为以下内容

"@pact-foundation/pact-node": "6.9.0",    

并添加分辨率(我使用的是 yarn 而不是 npm)

"resolutions": {
  "@pact-foundation/pact-node": "6.9.0"
}

将依赖项的总大小降低到

du -sh node_modules/@pact-foundation/*
1.7M    node_modules/@pact-foundation/pact-node
170M    node_modules/@pact-foundation/pact-standalone

干杯 谢恩

遗憾的是,不,还没有。

目前,我们的主要 Pact 应用程序是用 Ruby 编写的,并与 Traveling Ruby 打包在一起,这是一种为不同的 OS/architectures 打包 ruby 应用程序的方法。现在最初的目的是只下载 OS/arch 特定的二进制文件,这样您就不必加载所有内容,但是,a bug in npm is causing issues with optional dependencies when a package-lock.json is committed into a repository。为了解决这个问题,我们最终不得不将它们打包在一起,这是我特别不喜欢的。

不过,好消息是我们正在解决这个问题。 We are currently trying to reimplement our Pact application using Rust,它将编译为本机二进制文件,而没有 Ruby 附带的所有额外内容,这将大大减少二进制文件的整体大小。目前还没有最终定稿,但还在制作中,请耐心等待。

谢谢。