闪电般快速且简单的 TypeScript 无服务器构建
缓慢的构建过程造成的损失远不止浪费时间。几秒钟之后,你可能就会忍不住去查看 Slack,不知不觉几分钟就过去了。时间再长一点,你可能就会在 Reddit 上消磨 20 分钟。快速构建意味着更快的反馈循环,以及因分心而不得不切换上下文的风险更低。
esbuild是一个“速度极快的 JavaScript 打包器”,在本教程中,我将向您展示如何为 Typescript Serverless Framework项目实现极快的构建速度,同时大幅降低配置的复杂性,与其他替代方案相比。
演示项目
让我们从一个空文件夹开始,运行命令npm init -y初始化一个新项目。接下来,我们创建一个函数作为 Lambda 处理程序,代码如下src/function.ts:
// src/function.ts
export const handler = async (event) => {
console.log(event);
return {
status: 200
};
};
由于我们将使用 Serverless 和 esbuild 来打包和部署我们的应用程序,因此我们需要安装 Serverless 和 Serverless esbuild 插件:npm install serverless serverless-esbuild --save-dev
最后,要部署我们的应用程序,我们只需要创建一个serverless.yml
# serverless.yml
service: esbuild-demo
plugins:
- serverless-esbuild
provider:
name: aws
runtime: nodejs14.x
functions:
function:
handler: src/function.handler
现在我们可以运行npx serverless deploy应用程序,让它在 AWS 上启动并运行——已完成转译、三次摇晃,一切就绪。无需额外配置,当然,您也可以根据需要配置 esbuilds 的行为tsconfig.json。转译目标会自动从 Serverless 提供程序设置中的 Lambda 运行时中选择,但如果您已配置目标,它也会自动发现并执行。
使用 Jest 设置单元测试也同样简单。首先,我们需要添加 Jest、Jest 类型和 Jest esbuild 转换器:
npm install jest esbuild-jest @types/jest --save-dev
然后配置 Jest 以使用 esbuild 转换器:
// jest.config.json
{
"transform": {
"^.+\\.(j|t)sx?$": "esbuild-jest"
}
}
我们现在也可以编写 TypeScript 单元测试了:
// tests/function.test.ts
import { handler } from '../src/function';
describe('[function]', () => {
it('should return status 200', async () => {
const res = await handler(null)
expect(res).toEqual({
status: 200
});
});
});
并用它们运行npx jest!
概括
在将几个或复杂或简单的项目从 Webpack 配置迁移过来之后,esbuild 几乎每次都能“即插即用”,完美替代 Webpack。它不仅构建速度显著提升,而且所需的配置也少得多!🚀
您可以在这里找到完整的演示项目!
如果您喜欢这篇文章并想了解更多内容,请在 Twitter 上关注我@TastefulElk,我经常在那里撰写关于无服务器技术、AWS 和开发人员效率的文章!
文章来源:https://dev.to/aws-builders/lightning-fast-simple-typescript-serverless-builds-33ed

