@architect/hydratenpm ensures that all functions managed by Architect have their dependencies installed. Functions containing all required dependencies are considered to be 'hydrated' - thus the name!
@architect/hydratenpm supports dependencies managed in the following languages using the following package managers:
Installs function dependencies, then invokes
To ensure local development behavior is as close to
Note: by default
Updates function dependencies, then invokes
Note: by default
Copies shared code (from
@architect/hydratenpm supports dependencies managed in the following languages using the following package managers:
- Node.js via
npm
usingpackage.json
(and optionallypackage-lock.json
), or viayarn
usingpackage.json
andyarn.lock
- Python via
pip3
using arequirements.txt
file - Ruby via
bundle
usingGemfile
andGemfile.lock
files
Installation
npm install @architect/hydrate
API
All methods accept an options
object can include the following properties:autoinstall
- Boolean - Enables or disables automated Lambda dependency treeshaking via static code analysis
false
- Used by install
basepath
- String - Filesystem path in which Hydrate should search for functions
install
+ update
copyShared
- Boolean - Enables or disables copying of shared code folders (e.g.src/shared
) into Lambdas
true
- Used by install
+ update
cwd
- String - Root filesystem path of the project Hydrate is working in
basepath
; if using in conjunction with basepath
, specify a subset of the project with basepath
, for example:- `{ cwd: '/your/project/', basepath: '/your/project/src/http/' }` runs Hydrate against `/your/project/` (without having to use `process.chdir`) and only hydrates functions within `/your/project/src/http/**`
- Used by install
+ update
+ shared
hydrateShared
- Boolean - Enables or disables dependency hydration in shared code folders (e.g.src/shared
)
true
- Used by install
+ update
inventory
- Object - Architect Inventory object; generally used internallyonly
- String - Specify a subset of possible shared files forshared
to copy into Lambdas
shared
, views
, or staticJson
- Used by shared
quiet
- Boolean - Disables (most) loggingsymlink
- Boolean - Enables or disables symlinking instead of full directory copying, useful for local development
false
- Used by install
+ update
+ shared
timeout
- Number - Amount of time in milliseconds to give each package manager process to execute
install
+ update
verbose
- Boolean - Enables verbose logging
Note oncwd
vsbasepath
:cwd
is necessary for Hydrate to find your project's manifest and key files and folders, whilebasepath
scopes hydration to a specific path. When in doubt, include neither parameter, Hydrate will default to process working directory; if you know you need to aim Hydrate at a specific place but aren't sure which parameter to use, usecwd
.
hydrate.install(options[, callback]) → [Promise]
Installs function dependencies, then invokes hydrate.shared()
shared.To ensure local development behavior is as close to
staging
and production
as possible, hydrate.install()
(and other hydrate functions) uses:- Node.js:
npm ci
ifpackage-lock.json
is present andnpm i
if not; oryarn
- Python:
pip3 install
- Ruby:
bundle install
Note: by default
update
also installs dependencies in shared folders like src/shared
and src/views
.hydrate.update(options[, callback]) → [Promise]
Updates function dependencies, then invokes hydrate.shared()
shared.update
is functionally almost identical to install
install, except it will update dependencies to newer versions if they exist. This is done via:- Node.js:
npm update
oryarn upgrade
- Python:
pip3 install -U --upgrade-strategy eager
- Ruby:
bundle update
Note: by default
update
also updates dependencies in shared folders like src/shared
and src/views
.hydrate.shared(options[, callback]) → [Promise]
Copies shared code (from src/shared
and src/views
, or your custom @shared
+ @views
paths, if any) into all functions.