Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pertrai1/serverless-stack-api
https://github.com/pertrai1/serverless-stack-api
Last synced: 4 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/pertrai1/serverless-stack-api
- Owner: pertrai1
- License: mit
- Created: 2019-12-21T19:09:43.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-09T22:18:38.000Z (almost 2 years ago)
- Last Synced: 2023-02-28T20:46:22.336Z (over 1 year ago)
- Language: JavaScript
- Size: 2.6 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 26
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Serverless Node.js Starter
A Serverless starter that adds ES7 syntax, 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 (an extension of the [serverless-webpack](https://github.com/serverless-heaven/serverless-webpack) plugin) and the [serverless-offline](https://github.com/dherault/serverless-offline) plugin. It supports:
- **Generating optimized Lambda packages with Webpack**
- **Use ES7 syntax in your handler functions**
- Use `import` and `export`
- **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 ES7 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`.#### Linting
We use [ESLint](https://eslint.org) to lint your code via the [serverless-bundle](https://github.com/AnomalyInnovations/serverless-bundle) plugin.
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 [Anomaly Innovations](https://anoma.ly); makers of [Seed](https://seed.run) and [Serverless Stack](https://serverless-stack.com).