Pact-node依赖关系是非常大的,任何减小大小的方法?

时间:2018-02-21 17:30:13

标签: pact pact-node

我们已经使用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",    

并添加分辨率(我使用纱线而不是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

干杯 沙恩

1 个答案:

答案 0 :(得分:0)

可悲的是,不,还没有。

目前,我们的主要Pact应用程序是用Ruby编写的,并与Traveling Ruby一起打包,这是一种为不同操作系统/体系结构打包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附带的所有额外内容,这将大大减少二进制文件的整体大小。目前还没有最终确定,但仍在进行中,所以请耐心等待。

感谢。