Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/anomalyinnovations/serverless-nodejs-starter
A Node.js starter for Serverless Framework with ES6 and TypeScript support
https://github.com/anomalyinnovations/serverless-nodejs-starter
es6 jest serverless serverless-bundle serverless-framework serverless-offline typescript
Last synced: 13 days ago
JSON representation
A Node.js starter for Serverless Framework with ES6 and TypeScript support
- Host: GitHub
- URL: https://github.com/anomalyinnovations/serverless-nodejs-starter
- Owner: AnomalyInnovations
- License: mit
- Created: 2017-03-24T20:42:00.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-09T22:17:00.000Z (almost 2 years ago)
- Last Synced: 2024-04-14T19:56:51.175Z (7 months ago)
- Topics: es6, jest, serverless, serverless-bundle, serverless-framework, serverless-offline, typescript
- Language: JavaScript
- Homepage: https://serverless-stack.com/chapters/serverless-nodejs-starter.html
- Size: 3.2 MB
- Stars: 753
- Watchers: 19
- Forks: 159
- Open Issues: 38
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Serverless Node.js Starter [![Seed Status](https://api.seed.run/serverless-stack/serverless-nodejs-starter/stages/prod/build_badge)](https://console.seed.run/serverless-stack/serverless-nodejs-starter)
A Serverless starter that adds ES6, TypeScript, serverless-offline, linting, environment variables, and unit test support. Part of the [Serverless Stack](http://serverless-stack.com) guide.
[Serverless Node.js Starter](https://github.com/AnomalyInnovations/serverless-nodejs-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 ES6 or TypeScript in your handler functions**
- **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://z6pv80ao4l.execute-api.us-east-1.amazonaws.com/dev/hello`](https://z6pv80ao4l.execute-api.us-east-1.amazonaws.com/dev/hello)
And here is the ES6 source behind it
``` javascript
export const hello = async (event, context) => {
return {
statusCode: 200,
body: JSON.stringify({
message: `Go Serverless v1.0! ${(await message({ time: 1, copy: 'Your function executed successfully!'}))}`,
input: event,
}),
};
};const message = ({ time, ...rest }) => new Promise((resolve, reject) =>
setTimeout(() => {
resolve(`${rest.copy} (with a delay)`);
}, time * 1000)
);
```### Upgrading from v1.x
We have detailed instructions on how to upgrade your app to the v2.0 of the starter if you were using v1.x before. [Read about it here](https://github.com/AnomalyInnovations/serverless-nodejs-starter/releases/tag/v2.0).
### 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-nodejs-starter --name my-project
```Enter the new directory
``` bash
$ cd my-project
```Install the Node.js 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`.#### TypeScript
If [serverless-bundle](https://github.com/AnomalyInnovations/serverless-bundle) detects a `tsconfig.json` in your service root, it'll compile it using TypeScript. We have a separate starter for TypeScript here, [**Serverless TypeScript Starter**](https://github.com/AnomalyInnovations/serverless-typescript-starter).
#### 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-nodejs-starter/issues/new) if you've found a bug or have some suggestions.
- Or submit a pull request!---
This repo is maintained by [Serverless Stack](https://serverless-stack.com).