https://github.com/anomalyinnovations/serverless-typescript-starter
A Serverless starter that adds TypeScript, serverless-offline, linting, environment variables, and unit test support.
https://github.com/anomalyinnovations/serverless-typescript-starter
jest serverless serverless-bundle serverless-framework serverless-offline typescript
Last synced: 5 days ago
JSON representation
A Serverless starter that adds TypeScript, serverless-offline, linting, environment variables, and unit test support.
- Host: GitHub
- URL: https://github.com/anomalyinnovations/serverless-typescript-starter
- Owner: AnomalyInnovations
- License: mit
- Created: 2020-10-16T01:43:41.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-12-02T22:39:17.000Z (over 3 years ago)
- Last Synced: 2025-06-02T02:34:01.305Z (about 1 month ago)
- Topics: jest, serverless, serverless-bundle, serverless-framework, serverless-offline, typescript
- Language: TypeScript
- Homepage:
- Size: 139 KB
- Stars: 83
- Watchers: 2
- Forks: 20
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Serverless TypeScript Starter [](https://console.seed.run/serverless-stack/serverless-typescript-starter)
A Serverless starter that adds TypeScript, serverless-offline, linting, environment variables, and unit test support.
This starter uses the [serverless-bundle](https://github.com/AnomalyInnovations/serverless-bundle) plugin and the [serverless-offline](https://github.com/dherault/serverless-offline) plugin. It supports:
- **Generating optimized Lambda packages with Webpack**
- **Using TypeScript in your handler functions and tests**
- **Run API Gateway locally**
- Use `serverless offline start`
- **Support for unit tests**
- Run `npm test` to run your tests
- **Sourcemaps for proper error messages**
- Error message show the correct line numbers
- Works in production with CloudWatch
- **Lint your code with ESLint**
- **Add environment variables for your stages**
- **No need to manage Webpack or Babel configs**---
### Demo
A demo version of this service is hosted on AWS - [`https://ylsml6v6r6.execute-api.us-east-1.amazonaws.com/dev/hello`](https://ylsml6v6r6.execute-api.us-east-1.amazonaws.com/dev/hello)
And here is the TS source behind it
``` javascript
export async function hello(
event: APIGatewayEvent,
context: Context
): Promise {
return {
statusCode: 200,
body: JSON.stringify({
message: "Go Serverless v2.0! Your function executed successfully!",
context,
event,
}),
};
}
```### Requirements
- [Install the Serverless Framework](https://serverless.com/framework/docs/providers/aws/guide/installation/)
- [Configure your AWS CLI](https://serverless.com/framework/docs/providers/aws/guide/credentials/)### Installation
To create a new Serverless project.
``` bash
$ serverless install --url https://github.com/AnomalyInnovations/serverless-typescript-starter --name my-project
```Enter the new directory
``` bash
$ cd my-project
```Install the npm packages
``` bash
$ npm install
```### Usage
To run a function on your local
``` bash
$ serverless invoke local --function hello
```To simulate API Gateway locally using [serverless-offline](https://github.com/dherault/serverless-offline)
``` bash
$ serverless offline start
```Deploy your project
``` bash
$ serverless deploy
```Deploy a single function
``` bash
$ serverless deploy function --function hello
```#### Running Tests
Run your tests using
``` bash
$ npm test
```We use Jest to run our tests. You can read more about setting up your tests [here](https://facebook.github.io/jest/docs/en/getting-started.html#content).
#### Environment Variables
To add environment variables to your project
1. Rename `env.example` to `.env`.
2. Add environment variables for your local stage to `.env`.
3. Uncomment `environment:` block in the `serverless.yml` and reference the environment variable as `${env:MY_ENV_VAR}`. Where `MY_ENV_VAR` is added to your `.env` file.
4. Make sure to not commit your `.env`.#### Linting
We use [ESLint](https://eslint.org) to lint your code via [serverless-bundle](https://github.com/AnomalyInnovations/serverless-bundle).
You can turn this off by adding the following to your `serverless.yml`.
``` yaml
custom:
bundle:
linting: false
```To [override the default config](https://eslint.org/docs/user-guide/configuring), add a `.eslintrc.json` file. To ignore ESLint for specific files, add it to a `.eslintignore` file.
### Support
- Open a [new issue](https://github.com/AnomalyInnovations/serverless-typescript-starter/issues/new) if you've found a bug or have some suggestions.
- Or submit a pull request!---
This repo is maintained by [Anomaly Innovations](https://anoma.ly); makers of [Seed](https://seed.run) and [Serverless Stack](https://serverless-stack.com).