-
Notifications
You must be signed in to change notification settings - Fork 112
Description
爽文看完了,瓜也吃完了,结束后,作为一个非前端开发,来探究一下,发现鹅厂还是有点冤的,难道就没人去下载看看 aws-sdk 到底多大吗? ( 疑似 batchor 是故意搞了个大新闻
先叠个甲,本人非前端开发,也不是鹅厂员工,我也无数次诟病wxqq应用犹如3A大作一般的大小,但是代码技术就是 no bb,show me the code
我的环境
node -v
v16.14.2
npm -v
8.5.0
全包对比
大小对比
- aws-sdk
按照 https://github.com/aws/aws-sdk-js 描述的安装方式,也有100M大小了
npm i aws-sdk
du -sh node_modules/aws-sdk
100M node_modules/aws-sdk
Update: 我找错位置了, 当前最新版的 aws-sdk 仓库位置是 https://github.com/aws/aws-sdk-js-v3/ , README 的 Getting Started 写的就是子模块的安装方式了,如果是专业的前端开发人员,可能不会像我一样找错位置下载全包。
- tencentcloud-sdk-nodejs
npm install tencentcloud-sdk-nodejs
du -sh node_modules/tencentcloud-sdk-nodejs
66M node_modules/tencentcloud-sdk-nodejs
这个因为已经做了优化,大小变小了
安装上一个版本
npm install [email protected]
du -sh node_modules/tencentcloud-sdk-nodejs
80M node_modules/tencentcloud-sdk-nodejs
大小仍然比 aws-sdk 小
内容对比
- aws-sdk
ls node_modules/aws-sdk
CODE_OF_CONDUCT.md LICENSE.txt README.md browser.js clients dist-tools global.js index.js package.json scripts
Crashpad NOTICE.txt apis buildspec.yml dist global.d.ts index.d.ts lib react-native.js vendor
内容和 https://www.npmjs.com/package/aws-sdk?activeTab=code 一样,对比 aws-sdk github库,分发是去掉了 CHANGELOG 这些无用文件
- tencentcloud-sdk-nodejs
内容,确实包含 CHANGELOG test examples 等对用户无用的文件
ls node_modules/tencentcloud-sdk-nodejs
CHANGELOG.md README.md examples index.js package.json products.md tencentcloud tsconfig.json
LICENSE SERVICE_CHANGELOG.md index.d.ts node_modules prettier.config.js src test typings
子模块对比
而 batchor 的贴图中的 node_modules 是带 @ 的,这是模块化包,而不是传统的 aws-sdk 包。
AWS SDK v3 是模块化的,每个服务都是一个独立的包,命名空间为 @aws-sdk
,所以 #166 说用 按需分包的使用方式
对比 batchor 说的 aws-sdk
并无不妥。
但是 batchor 贴出的代码并没有展示他安装的是 aws-sdk 的哪个子模块。
- awk-sdk
我以安装 @aws-sdk/client-s3 测试,页面上显示 Unpacked Size
3.4 MB , 单独 client-s3 大小 4.2M,实际安装 client-s3 有一些依赖,此时因为安装 client-s3 导致的 @aws-sdk
目录总大小9.1M,仍旧和 batchor 贴出的大小不符合
npm i @aws-sdk/client-s3
du -sh node_modules/@aws-sdk/
9.1M node_modules/@aws-sdk/
du -sh node_modules/@aws-sdk/*
4.2M node_modules/@aws-sdk/client-s3
460K node_modules/@aws-sdk/client-sso
392K node_modules/@aws-sdk/core
48K node_modules/@aws-sdk/credential-provider-env
136K node_modules/@aws-sdk/credential-provider-http
148K node_modules/@aws-sdk/credential-provider-ini
68K node_modules/@aws-sdk/credential-provider-node
88K node_modules/@aws-sdk/credential-provider-process
116K node_modules/@aws-sdk/credential-provider-sso
76K node_modules/@aws-sdk/credential-provider-web-identity
136K node_modules/@aws-sdk/middleware-bucket-endpoint
36K node_modules/@aws-sdk/middleware-expect-continue
368K node_modules/@aws-sdk/middleware-flexible-checksums
36K node_modules/@aws-sdk/middleware-host-header
48K node_modules/@aws-sdk/middleware-location-constraint
48K node_modules/@aws-sdk/middleware-logger
36K node_modules/@aws-sdk/middleware-recursion-detection
288K node_modules/@aws-sdk/middleware-sdk-s3
36K node_modules/@aws-sdk/middleware-ssec
104K node_modules/@aws-sdk/middleware-user-agent
908K node_modules/@aws-sdk/nested-clients
112K node_modules/@aws-sdk/region-config-resolver
64K node_modules/@aws-sdk/signature-v4-multi-region
152K node_modules/@aws-sdk/token-providers
500K node_modules/@aws-sdk/types
36K node_modules/@aws-sdk/util-arn-parser
228K node_modules/@aws-sdk/util-endpoints
36K node_modules/@aws-sdk/util-locate-window
68K node_modules/@aws-sdk/util-user-agent-browser
84K node_modules/@aws-sdk/util-user-agent-node
100K node_modules/@aws-sdk/xml-builder
尝试安装 @aws-sdk
下所有包,这个大小似乎能和 batchor 发的对上
npm search @aws-sdk --json | jq -r '.[].name' | xargs npm install
du -sh node_modules/@aws-sdk/
12M node_modules/@aws-sdk/
- tencentcloud-sdk-nodejs
再看下 #166 说的 "比如只安装 CVM 的包:https://www.npmjs.com/package/tencentcloud-sdk-nodejs-cvm" 大小
npm i tencentcloud-sdk-nodejs-cvm
du -sh node_modules/tencentcloud-sdk-nodejs-cvm
832K node_modules/tencentcloud-sdk-nodejs-cvm
内容
ls node_modules/tencentcloud-sdk-nodejs-cvm
LICENSE index.d.ts node_modules prettier.config.js src tsconfig.json
README.md index.js package.json products.md tencentcloud typings
这不挺正常的吗,也没有 CHANGELOG 或者 test 文件。
注意: 此时 cvm 子模块版本, 4.0.1018 • Public • Published 12 days ago, 并不是更新后去掉了 CHANGELOG 或者 test 文件。
说明,子模式打包是去掉了无用文件,只是总包文件打包的配置没有像子模块打包那样配置。
那些问候父母的是不是应该道个歉呢?
Q: 那用户自己能找到自己需要的子模块吗?
现在的 README.md 已经优化过了,我们来到 release 4.0.1021, commit 595f609 , 搜索 README.md ,发现确实也有提到,详见 README.md?plain=1#L23
但是,咱就是说,这个确实太不显眼了,当然这里现在已经修改了
最后,希望大家能有正确分辨信息的能力,不要听风就是雨。