Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
9fb23a7
feat: add express template
WandersonAlves May 18, 2022
dae3756
refactor: change template names
WandersonAlves May 18, 2022
30a4641
fix: normalize templates
WandersonAlves May 18, 2022
b390e84
docs: update README
May 18, 2022
c896b5b
refactor: move routes to v1/modules
May 23, 2022
9d53195
fix: missing files
Jun 14, 2022
3445fe9
chore: add prompts package
Jul 29, 2022
b40eef6
refactor: types and unused code
Jul 29, 2022
cf4c8fa
feat: add interactive generator
Jul 29, 2022
c09813c
docs: update README
Jul 29, 2022
1d5dd74
feat: add debugging
Dec 5, 2022
390305b
feat: update commander
Dec 5, 2022
1801543
refactor: move code around
Dec 5, 2022
3f83637
refactor: use projectName flag as argument
Dec 6, 2022
a636a9b
docs: update README.md
Dec 6, 2022
63939bd
chore: update scripts to match new projectName argument
Dec 6, 2022
260f621
feat: throw a error when LAMBA env is not set
Dec 6, 2022
489ca9b
fix: e2e testing
Dec 8, 2022
ad3c508
refactor: remove unnecessary code
Dec 8, 2022
b4fc4cb
feat: show correct version on -v command
Dec 8, 2022
06f66a7
fix: Makefile
Dec 8, 2022
5403cd7
fix: clean build folder on clean script
Dec 8, 2022
7408a07
feat(sls-lambda): add support to build multiples lambdas
Dec 8, 2022
99248ef
chore: better scope-enum commitlint
Dec 8, 2022
a80a029
fix(express): fix project params
Dec 15, 2022
8fb613e
feat: add cache to verdaccio
Dec 19, 2022
c592838
chore: add pre-push script
Dec 19, 2022
c191e04
feat(sls-lambda) update depedencies
Dec 19, 2022
c55ee1c
chore: update config files
Dec 19, 2022
e68864a
feat(express): update files
Dec 19, 2022
28e440b
fix: update project files
Dec 19, 2022
89f244f
feat: update eslint
Dec 19, 2022
fc17b79
fix: remove verdaccio-memory
Dec 19, 2022
7fdf628
Create docker-image.yml
WandersonAlves Dec 19, 2022
6945cb6
chore: add github actions
Dec 19, 2022
3481ff5
fix: rename action file
Dec 19, 2022
04be544
chore: deduplicate yarn.lock
Dec 28, 2022
278a434
chore: add lockfiles to templates
Dec 28, 2022
e43e090
refactor: change code width
Jan 12, 2023
f51b924
chore: add .yarn to gitignore
May 2, 2024
a2beb6d
chore: upgrade to yarn 3
May 2, 2024
d452226
chore(release): 0.3.42
May 2, 2024
6e5c349
fix: add .yarn to gitignore
May 2, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .github/workflows/e2e-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: E2E Testing

on: [push, pull_request]

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build/Run e2e testing in Docker
run: docker build --no-cache -t create-node-ms-e2e-test . && docker run create-node-ms-e2e-test
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
node_modules/
.env
yarn-error.log
lib/
lib/
log.log
.yarn
2 changes: 1 addition & 1 deletion .prettierrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"printWidth": 130,
"printWidth": 96,
"tabWidth": 2,
"useTabs": false,
"semi": true,
Expand Down
21 changes: 21 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"command": "yarn run ${input:command}",
"name": "Run yarn dev",
"request": "launch",
"type": "node-terminal"
}
],
"inputs": [
{
"id": "command",
"description": "Command to run",
"type": "promptString"
}
]
}
1 change: 1 addition & 0 deletions .yarnrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
nodeLinker: node-modules
27 changes: 27 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,33 @@

All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.

### [0.3.42](https://github.com/WandersonAlves/create-node-ms/compare/v0.3.41...v0.3.42) (2024-05-02)

### Features

- add cache to verdaccio ([8fb613e](https://github.com/WandersonAlves/create-node-ms/commit/8fb613e72d9ccad34150eb53daf83559d5bded02))
- add debugging ([1d5dd74](https://github.com/WandersonAlves/create-node-ms/commit/1d5dd74e43ffe5ed10b314a5ad60801bcbaf10d0))
- add express template ([9fb23a7](https://github.com/WandersonAlves/create-node-ms/commit/9fb23a74133d8eea15ebe59e2cba13d3ad046ad6))
- add interactive generator ([cf4c8fa](https://github.com/WandersonAlves/create-node-ms/commit/cf4c8faca493cc69dc6ce4c3ecf46d84b9ac3470))
- **express:** update files ([e68864a](https://github.com/WandersonAlves/create-node-ms/commit/e68864a8070af46424e722388f87815377dc4d72))
- show correct version on -v command ([b4fc4cb](https://github.com/WandersonAlves/create-node-ms/commit/b4fc4cb7a0a5ac9c01ae6cf7c76ffaae3a4091a0))
- **sls-lambda:** add support to build multiples lambdas ([7408a07](https://github.com/WandersonAlves/create-node-ms/commit/7408a07da65d359e25bd1400dd207e8e93f19080))
- throw a error when LAMBA env is not set ([260f621](https://github.com/WandersonAlves/create-node-ms/commit/260f62156e956d506f1a29dbaa41d10bf36ba6ee))
- update commander ([390305b](https://github.com/WandersonAlves/create-node-ms/commit/390305b5f608400f6e94f1051d354a7e274da5e9))
- update eslint ([89f244f](https://github.com/WandersonAlves/create-node-ms/commit/89f244f15b10d34752aba133bdab4429936530ce))

### Bug Fixes

- clean build folder on clean script ([5403cd7](https://github.com/WandersonAlves/create-node-ms/commit/5403cd76da75e49031e0090cfbfcf28de1307497))
- e2e testing ([489ca9b](https://github.com/WandersonAlves/create-node-ms/commit/489ca9b40cef8932201f68d1508cb5a4953204d7))
- **express:** fix project params ([a80a029](https://github.com/WandersonAlves/create-node-ms/commit/a80a0294e8e1f1708efe2762aaae2e5251278654))
- Makefile ([06f66a7](https://github.com/WandersonAlves/create-node-ms/commit/06f66a7da7a8b6874062ce8a8e2ebb80ab8fbacf))
- missing files ([9d53195](https://github.com/WandersonAlves/create-node-ms/commit/9d5319559f63eaa6e669d5ab5fae8adf27169e57))
- normalize templates ([30a4641](https://github.com/WandersonAlves/create-node-ms/commit/30a4641025fe777e02cdaab4efa8ccee9cf0363f))
- remove verdaccio-memory ([fc17b79](https://github.com/WandersonAlves/create-node-ms/commit/fc17b7979d14578d285164b2c23759c98a63ab50))
- rename action file ([3481ff5](https://github.com/WandersonAlves/create-node-ms/commit/3481ff5358898757e8361518e3e3790d4abf8c47))
- update project files ([28e440b](https://github.com/WandersonAlves/create-node-ms/commit/28e440b0da96cbe4d06d973a39b307be842e414d))

### [0.3.41](https://github.com/WandersonAlves/create-node-ms/compare/v0.3.40...v0.3.41) (2022-01-10)

### Bug Fixes
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM node:12.18.4-alpine3.12
FROM node:19-alpine3.15

WORKDIR /usr/src/app
ADD ./ /usr/src/app/
Expand Down
10 changes: 6 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ dev:
yarn dev
e2e:
yarn test:e2e
code-nse:
yarn dev:nse && code ../create-node-ms-junk/serverless-express
code-nsl:
yarn dev:nsl && code ../create-node-ms-junk/serverless-lambda
code-serverless-express:
yarn dev:se && code ../create-node-ms-junk/sls-express
code-serverless-lambda:
yarn dev:sl && code ../create-node-ms-junk/sls-lambda
code-express:
yarn dev:express && code ../create-node-ms-junk/express-server
76 changes: 59 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,93 @@
# clean-node-ms

A optionated group of templates to help you build nice micro-services (in aws lamda) :bowtie:
A optionated group of templates to help you build nice micro-services :bowtie:

Currently has two templates:
Currently has support for these templates below:

- node-serverless-express (nse)
- node-serverless-lambda (nsl)
- express
- serverless-express
- serverless-lambda

All of them comes with `build` and `publish` commands in the most optmized way (PR's welcome!)

## Quick Overview

Interactive mode

```
npx create-node-ms create
```

Non-Interactive mode

```
npx create-node-ms <template-name> -pn test-service
npx create-node-ms <template-name> <projectName> [options]
cd test-service
yarn dev
```

## Global Options
### Global Options (Non-Interactive mode)

- `-pn, --projectName`(**required**): Project name
- `-d, --addDeps`: Add extra depedencies that are not installed by default
- `-D, --addDevDeps`: Add dev extra depedencies that are not installed by default
- `-p, --path`: Absolute or relative path to create the project
- `--useNpm`: Use npm instead of yarn to install depedencies
- `--noCommit`: Don't do a first commit. If you has git, but not configured a name/email, git will fail to commit.
- `--verbose`: Output verbose info
- `-d, --addDeps`: Add extra depedencies that are not installed by default
- `-D, --addDevDeps`: Add dev extra depedencies that are not installed by default
- `--useNpm`: Use npm instead of yarn to install depedencies

## Templates

### node-serverless (`node-serverless-express` | `node-serverless-lambda`)
### express

Comes with two serverless flavors: express (`node-serverless-express` or `nse`) and lambda (`node-serverless-lambda` or `nsl`)
Generates a project with ExpressJS and Typescript

> `npx create-node-ms nse -pn serverless-express`
> `npx create-node-ms express express-server`

- Serverless Framework + `serverless-offline` using `aws-serverless-express` or raw lambda file
Includes:

- ExpressJS + Typescript
- IoC|DI: InversifyJS
- Testing: mocha + chai
- Build: Typescript + Webpack

Has configuration for debugging within vscode (see .vscode/launch.json)
### serverless-express

Generates a project with ExpressJS and Typescript running locally with [`serverless-offline`](https://www.serverless.com/plugins/serverless-offline)

> `npx create-node-ms serverless-express sls-express`

Includes:

- Serverless Framework + `serverless-offline` + `aws-serverless-express` + ExpressJS + Typescript
- IoC|DI: InversifyJS
- Testing: mocha + chai
- Build: Typescript + Webpack

### serverless-lambda

Generates a project with Typescript running locally with [`serverless-offline`](https://www.serverless.com/plugins/serverless-offline)

Can store multiple lambdas (instead of one from `serverless-express`) and has support for building multiple lambdas (or just one) running `LAMBDA=<lambda-name>,<lambda-name> yarn build` (see generated project's README.md)

> `npx create-node-ms serverless-lambda sls-lambda`

Includes:

- Serverless Framework + `serverless-offline` + Typescript
- IoC|DI: InversifyJS
- Testing: mocha + chai
- Build: Typescript + Webpack

## Testing

This package uses e2e testing. Check `tasks/test-e2e.sh`. Uses [`verdaccio`](https://github.com/verdaccio/verdaccio) under the hood.

## Contributing

- Fork and clone this repo
- Make changes
- Run `yarn dev`, `yarn dev:nse` or `yarn dev:nsl` (or `make code-nse` || `make code-nsl`) to create a new template with your code changes
- This will remove `../create-node-ms-junk` folder
- Run `make code-serverless-express` || `make code-serverless-lambda` || `make code-express` to create a new template with your code changes (or `yarn dev create` to run interactive mode)
- This will clean `../create-node-ms-junk` folder
- Create a `../create-node-ms-junk/` folder
- And generate a new project with the name declared on your dev command on `../create-node-ms-junk/` folder
- Commit your changes (this project has `commitlint` configured)
Expand Down
36 changes: 17 additions & 19 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,30 +1,27 @@
{
"name": "create-node-ms",
"version": "0.3.41",
"version": "0.3.42",
"engines": {
"node": ">=10.22.0"
},
"description": "A generator for microservices with Clean Architecture in Node",
"scripts": {
"create-node-ms": "node lib/index.js",
"dev:ms": "yarn dev:prepare node-ms -p ../create-node-ms-junk --verbose --projectName test-service -e test",
"dev:nse": "yarn dev:prepare nse -p ../create-node-ms-junk -pn serverless-express --verbose",
"dev:nsl": "yarn dev:prepare nsl -p ../create-node-ms-junk -pn serverless-lambda --verbose",
"dev:nsl:deps": "yarn dev:prepare nsl -p ../create-node-ms-junk -pn deps-test --verbose -d date-fns lodash -D @types/lodash",
"dev:se": "yarn dev:prepare serverless-express sls-express -p ../create-node-ms-junk --verbose",
"dev:express": "yarn dev:prepare express express-server -p ../create-node-ms-junk --verbose",
"dev:sl": "yarn dev:prepare serverless-lambda sls-lambda -p ../create-node-ms-junk --verbose",
"dev:sl:deps": "yarn dev:prepare serverless-lambda -p ../create-node-ms-junk -pn deps-test --verbose -d date-fns lodash -D @types/lodash",
"dev:prepare": "yarn dev:clean && mkdir ../create-node-ms-junk && yarn dev",
"dev:clean": "rm -rf ../create-node-ms-junk",
"dev:help": "yarn dev --help",
"dev": "node -r ts-node/register ./src/index.ts ",
"start": "node -r ts-node/register ./src/index.ts",
"clean": "yarn dev:clean",
"build": "tsc",
"prerelease": "yarn build",
"release": "npx standard-version && yarn build && yarn publish",
"release": "npx standard-version && yarn build && yarn npm publish",
"format": "prettier --write '**/*.ts'",
"test:e2e": "docker build --no-cache -t create-node-ms-e2e-test . && docker run create-node-ms-e2e-test"
},
"bin": {
"create-node-ms": "./lib/index.js"
},
"bin": "./lib/index.js",
"files": [
"lib/**/*",
"shared-templates/**/*",
Expand All @@ -46,6 +43,7 @@
"@commitlint/config-conventional": "^9.1.2",
"@types/fs-extra": "^9.0.1",
"@types/node": "^14.0.14",
"@types/prompts": "^2.0.14",
"husky": "^4.2.5",
"nodemon": "^2.0.4",
"prettier": "^2.1.1",
Expand All @@ -54,8 +52,9 @@
"typescript": "^4.0.2"
},
"dependencies": {
"commander": "^6.2.0",
"commander": "^9.4.1",
"fs-extra": "^9.0.1",
"prompts": "^2.4.2",
"winston": "^3.3.3"
},
"commitlint": {
Expand All @@ -64,20 +63,19 @@
2,
"always",
[
"node-ms",
"nse",
"nsl",
"serverless",
"core",
"lib"
"lib",
"sls-lambda",
"sls-express",
"express"
]
]
}
},
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
"pre-commit": "pretty-quick --staged"
"pre-commit": "pretty-quick --staged",
"pre-push": "yarn test:e2e"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ module.exports = {
es6: true,
},
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/recommended-requiring-type-checking',
'prettier',
'prettier/@typescript-eslint',
],
parser: '@typescript-eslint/parser',
parserOptions: {
Expand Down
Loading