我们已经使用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
干杯 沙恩
答案 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附带的所有额外内容,这将大大减少二进制文件的整体大小。目前还没有最终确定,但仍在进行中,所以请耐心等待。
感谢。