Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
@bafsllc/nx-serverless
Advanced tools
🔎 Extensible Dev Tools for Monorepos.
🔎 Extensible Continous Delivery/Depolyment Tools on top of Nx workspace for Serverless Framework. Because on multiple lambda in one repository is an awesome thing!
Simplify any workflow that can be abstracted into one command using the same configuration structure as angular.json
, workspace.json
or nx.json
. Make development life-cycle easier, more effective and having less rituals. Communication through configurations and not documentations.
Framework Name | AWS | Azure | GCP |
---|---|---|---|
Node-Typescript (Webpack) | :white_check_mark: | :calendar: | :calendar: |
Angular Universal (Typescript-compiler) | :white_check_mark: | :calendar: | :calendar: |
Express-js (Typescript-compiler) | :white_check_mark: | :calendar: | :calendar: |
Command Names | AWS | Azure | GCP |
---|---|---|---|
Deploy | :white_check_mark: | :calendar: | :calendar: |
Destroy | :white_check_mark: | :calendar: | :calendar: |
Sls Command | :white_check_mark: | :calendar: | :calendar: |
Serverless-offline | :white_check_mark: | :calendar: | :calendar: |
Versions | Status |
---|---|
1.0+ | :white_check_mark: |
2.0+ | :white_check_mark: |
Builder Names | |
---|---|
Webpack compiler | :white_check_mark: |
Typescript compiler | :white_check_mark: |
Whats special about the plugin is that, you DO NOT need to use serverless-wepack
or serverless-typescript
plugins anymore! The library uses angular builders to build or typescript compilers to compile your code for you into javascript before packaging them into a zip file and deploy them to the serverless cloud.
Resolver Names | |
---|---|
Webpack stats | :white_check_mark: |
Depcheck | :white_check_mark: |
The other special thing that the library does is, it uses webpack stats
to build up your dependencies
and write a package.json
into your dist
folder in the attempt to minimize the amount of dependencies
in your node_modules
needed to be uploaded to the cloud.
For typescript compilers it uses dep-checks
to resolve the dependencies and write up a package.json
file
First you need to create an nx workspace to get started!
npx create-nx-workspace # Then you got to use yarn/npm
// if start with angular presets
nx add @flowaccount/nx-serverless # or with these options --project=my-app --provider=aws --addUniversal=yes
// else
npm install @flowaccount/nx-serverless --save-dev
npm init nx-workspace
// if start with angular presets
npm run nx add @flowaccount/nx-serverless # or with these options --project=my-app --provider=aws --addUniversal=yes
// else
npm install @flowaccount/nx-serverless --save-dev
yarn create nx-workspace
// if start with angular presets
yarn nx add @flowaccount/nx-serverless # or with these options --project=my-app --provider=aws --addUniversal=yes
// else
yarn add --dev @flowaccount/nx-serverless
nx run my-app:offline # to run the universal app offline checking serverless works locally
nx deploy my-app # to deploy the app
nx run my-app:destroy # to destroy the app
nx run my-app:compile # to compile only the serverless part of the app
nx run my-app:sls # to run the custom sls commands as per what you need!
Using npx
npx create-nx-workspace # Then you got to use yarn/npm
nx g @flowaccount/nx-serverless:api-serverless --name=myapi --provider=aws
Using npm
npm init nx-workspace
nx g @flowaccount/nx-serverless:api-serverless --name=myapi --provider=aws
Using yarn
yarn create nx-workspace
nx g @flowaccount/nx-serverless:api-serverless --name=myapi --provider=aws
Deploying/Compiling application (Assuming you have nx added globally, otherwise use npx/npm/yarn!)
nx serve myapi --port=7777 # to serve the api locally on port 7777
nx deploy myapi --stage=dev# to deploy the api
nx build myapi # to build the api
To Debug your deployments
Edit the env.json
files generated by the schematics. change SLS_DEBUG
to true
"assets": [
"apps/app/src/favicon.ico",
"apps/app/src/robots.txt",
"apps/app/src/manifest.webmanifest",
{
"glob": "**/*",
"input": "libs/shared/ui-theme/assets",
"output": "./assets"
}
],
the resulting file tree will look like this:
<workspace name>/
├── apps/
│ ├── myapi/
| ├────────src/handler.ts
| ├────────jest.config.js
| ├────────tsconfig.json
| ├────────serverless.yml
| ├────────tsconfig.app.json
| ├────────tsconfig.spec.json
| ├────────tslint.json
├── libs/
├── tools/
├── nx.json
├── package.json
├── tsconfig.json
└── tslint.json
you workspace.json will be added with these
"build": {
"builder": "@flowaccount/nx-serverless:build",
"configurations": {
...
},
"options": {
...
}
},
"deploy": {
"builder": "@flowaccount/nx-serverless:deploy",
"options": {
"waitUntilTargets": ["myapi:some-other-builder"],
"buildTarget": "myapi:build:production",
"config": "apps/myapi/serverless.yml",
"location": "dist/static/apps/myapi",
"package": "dist/static/apps/myapi"
},
"configurations": {
"staging": {
"buildTarget": "myapi:build:staging",
"waitUntilTargets": ["myapi:some-other-builder:staging"],
"stage": "staging"
},
"production": {
"buildTarget": "myapi:build:production",
"waitUntilTargets": ["myapi:some-other-builder:production"],
"stage": "production"
}
}
},
"destroy": {
"builder": "@flowaccount/nx-serverless:destroy",
"options": {
...
}
},
"sls": {
"builder": "@flowaccount/nx-serverless:sls",
"options": {
...
}
}
}
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
...
}
},
"serve": {
"builder": "@flowaccount/nx-serverless:offline",
"configurations": {
...
},
"options": {
...
}
},
"test": {
"builder": "@nrwl/jest:jest",
"options": {
...
}
}
}
the resulting file tree will look like this:
<workspace name>/
├── apps/
│ ├── my-app/
| ├───────────────handler.ts
| ├───────────────serverless.yml
| ├───────────────tsconfig.serverless.json
├── libs/
├── tools/
├── nx.json
├── package.json
├── tsconfig.json
└── tslint.json
The existing angular project in workspace.json/angular.json will be updated with these sections
"compile": {
"builder": "@flowaccount/nx-serverless:compile",
"configurations": {
...
},
"options": {
...
}
},
"deploy": {
"builder": "@flowaccount/nx-serverless:deploy",
"options": {
...
}
},
"destroy": {
"builder": "@flowaccount/nx-serverless:destroy",
"options": {
...
}
},
"offline": {
"builder": "@flowaccount/nx-serverless:offline",
"configurations": {
...
},
"options": {
...
}
}
}
"sls": {
"builder": "@flowaccount/nx-serverless:sls",
"options": {
"waitUntilTargets": [],
"buildTarget": "my-app:build:production",
"config": "apps/my-app/serverless.yml",
"location": "dist/apps/my-app",
"package": "dist/apps/my-app",
"command": "package",
},
"configurations": {
"deploy-dev": {
"buildTarget": "my-app:build:dev",
"command": "deploy",
"stage": "dev"
},
"deploy-production": {
"buildTarget": "my-app:build:production",
"command": "deploy",
"stage": "prod"
}
}
}
You are most welcome to help! Please file a bug or submit a PR, read the guidelines for contributing and start right on!
FAQs
Serverless schematics for nx workspace
We found that @bafsllc/nx-serverless demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.