░██████ ░██████ ░██████████
░██ ░██ ░██ ░██ ░██
░██ ░██ ░██
░████████ ░████████ ░██
░██ ░██ ░██
░██ ░██ ░██ ░██ ░██
░██████ ░██████ ░██
亚历山德罗·拉塔奥版本
非正式叉子 标准 并行建设、工作重建、部署跳过未改变之处
个人叉子 标准 也就是说 Go projects 更快地建立,并在 dev 模式下行为正常.
SST所做的一切,它仍然做。 变化完全存在于Go运行时和dev重建回路中,它们对于一个有众多处理器的单曲来说最为重要:这个分叉是针对一个使用 438 Go Lambda 职能。 。 。 .
有什么不一样
-
去建设平行运行. Go跑步时间在整座建筑周围有一个独家锁,所以无论有多少核心可用,它一次编译了一个功能. 锁现在只负责自己的账务.
-
SST_BUILD_CONCURRENCY_FUNCTION为吴工作. 所记录的旋钮只针对节点和Python被执行,而对于Go处理器则默而忽略. 它现在盖了去建, 默认4. -
重建遵循实际进口. 在 Dev 中, SST 决定从目录中重建什么, 更改的文件会坐落其中 。 它现在使用处理器的实际导入图,所以编辑一个共享的软件包可以重建每一个导入它的功能,而别无其他功能.
-
无效的处理器一起重建 . 一旦重建范围跟随进口,一个保存可以使数百名处理者无效. 它们过去是逐一被重新编译的;现在它们被同时编译,在一个限度下.
-
部署停止一次重编一个处理器 . 每次部署都会放下 Dev 构建缓存,每个工人然后重启并编译它不再在那里找到的任何东西,一个接一个地在事件循环上. 在舞台上 18个Go处理器在dev, 也就是50秒的墙钟, 对于源没有改变。 同一套程序现在通过上面同时进行的重建,当有东西引用时,其运行时间开始懒散的处理者被留作编译.
-
编辑一个共享软件包不再重新部署每个函数 . 给每个二进制, 加上每个源文件的散列, 在数百名操作员导入的软件包中触摸一个文件,每个文物都得到新的散列,所以部署上传所有文件并更新每个函数,用于代码与已经部署的字节一致的程序. 部署现在与
-buildid=,因此两个构件在程序不同时不同,在程序不同时不同。 放弃的是NT_GNU_BUILD_ID,哪个-s -w已经让这里变得毫无用处了. -
部署人员不再支付虔诚工作的费用. 导入图只被 dev 文件监视器读取过,但每次建设后都被捕获,大约是每次部署建设成本的一倍. 现在它只被捕获在德夫.
-
每个 去建筑说花了多久. 一个部署在数分钟后请求构建和函数资源翻出之间没有打印出任何内容,所以单个处理器的编译时间只能通过读取调试日志来显示. 每个完成的构建现在打印 a
Built线条及其处理器和秒,形状与Created编号 :Updated已持续时间的行。 它骑在SST的UI打印的单项事件上,所以这保持了对Go运行时间的更改:没有新事件类型,打印机上没有增加大小写,没有上游合并到上地. -
一个大型的部署 停止淹没终端. 部署页脚列出飞行中的每一个资源,每100ms重新绘制位置,将光标移回第一行. 由于飞行中的资源比终端有行多,光标会停留在上行,所以每次重划都会在回滚中再次留下整个列表:相同
Creating数以万计的行。 现在的页脚只显示适合的行,状态行仍为后一. 其所言及何时而不变. -
所出州为相半. SST运行Pulumi来对抗其本地的DIY后端,它将全州在每一个资源被改变后都重置为缩进的JSON,而SST在部署时将同一份文件上传到州桶. 普鲁米自3.238起就已经写出收缩的"克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克 Pulumi's Node.js SDK 现在需要Node.js 22或以后.
-
更细修. 解决
GOMODCACHE可以用Ctrl -C取代寿命,go list输出通过明确的JSON标记来解码,一个无法解码的等值警告并保持默认,而不是悄悄地倒回序列构建.
付出的代价
在438手的单列车上测量的 这是用来,在无动于衷的部署:
| 在此之前 | 之后 | |
|---|---|---|
| 构建货币 | 1 (峰值2) (中文(简体) ) | 上限 |
| 每个手提箱的构建 | ~1.4s,其中一半是纯正图捕捉 | ~0.6s 时 |
在一个确实改变了某些东西的部署上:一个文件在共享处理器框架中编辑,其中434个模块导入。 此前,所有434个被再次上传,并更新了它们的函数. 之后,只有链接程序实际改变的处理器,对于那个编辑器来说是一个.
安装
npm install @alessandrolattao/sst
# bun add @alessandrolattao/sst
为Linux(x64和arm64)和macOS(Apple硅和英特尔)所建. 二进制仍然叫 sst这样 bunx sst, (中文(简体) ), npx sst 而每个现有的脚本都保持不变.
版本作为预发版出版(4.17.1-alessandrolattao.1这表示它们必须被明确钉住 永远不会被一个 ^4 范围意外。 狦 sst.config.ts 声明a version 因为SST用 Masterminds/semver 来检查平地 >= 从不匹配预释 :
version: ">= 4.13.1-0",
启动新项目
sst init 写入 sst.config.ts 无论它在水流中发现什么
目录,所以首先安装 CLI 并让它生成配置 :
mkdir my-app && cd my-app
npm init -y
npm install @alessandrolattao/[email protected]
npx sst init
然后打开生成的 sst.config.ts 并增加释放前地板
app() 返回, 否则 CLI 拒绝违背自己的配置 :
export default $config({
app(input) {
return {
name: "my-app",
version: ">= 4.13.1-0",
home: "aws",
};
},
async run() {},
});
从这里,一切都是上游SST: npx sst deploy --stage dev, (中文(简体) ),
npx sst dev,则 正在获取开始的引导
适用不变.
与上游的关系
这个叉道 sst/sst 并自动与它同步:每天的工作将补丁重新放入每一个新的上游版本,核实结果的构建和通过,并发布匹配的构建. 当冲突再起时,它停止并打开一个问题,而不是发表没有人读过的东西。 分支 :
dev- 上游的一面明镜,从未直接承诺feat/…——每变一分行,以dev,每个自成一体的, 足以送上游alessandrolattao——实际建设和公布的内容:上游加补丁加叉自取名
已出版的套件被更名,这样它就可以坐在真人旁边而无需声称自己的名字. 其他一切,包括 SST_BIN_PATH 逃出舱门,行为与上游完全相同.
上游文档
叉子不会改变你与人互动的行为,所以上游的道克是适用的:
本地运行
运行 bun run setup您需要吗 走开 财务报告和审定财务报表 阿宝 已安装.
cd examples/aws-api
go run ../../cmd/sst <command>
尝试用这个叉子对一个真正的项目 而不发表任何东西,指点 SST_BIN_PATH 写着:
go build -o /tmp/sst ./cmd/sst
SST_BIN_PATH=/tmp/sst bunx sst deploy --stage dev
许可证
麻省理工学院 和上游大学一样 见 自由主义,它保留了原始的SST版权.