https://github.com/architect/hydrate
Architect dependency hydrator and shared file manager
https://github.com/architect/hydrate
Last synced: 10 months ago
JSON representation
Architect dependency hydrator and shared file manager
- Host: GitHub
- URL: https://github.com/architect/hydrate
- Owner: architect
- License: apache-2.0
- Created: 2019-05-29T16:10:28.000Z (about 7 years ago)
- Default Branch: main
- Last Pushed: 2025-04-06T14:22:27.000Z (about 1 year ago)
- Last Synced: 2025-08-01T14:11:52.093Z (11 months ago)
- Language: JavaScript
- Size: 766 KB
- Stars: 4
- Watchers: 4
- Forks: 13
- Open Issues: 5
-
Metadata Files:
- Readme: readme.md
- Changelog: changelog.md
- Contributing: .github/contributing.md
- License: LICENSE
- Code of conduct: .github/code_of_conduct.md
Awesome Lists containing this project
README
# `@architect/hydrate` [](https://github.com/architect/hydrate/actions?query=workflow%3A%22Node+CI%22)
[@architect/hydrate][npm] 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/hydrate][npm] supports dependencies managed in the following languages using the following package managers:
- **Node.js** via `npm` using `package.json` (and optionally `package-lock.json`), or via `yarn` using `package.json` and `yarn.lock`
- **Python** via `pip3` using a `requirements.txt` file
- **Ruby** via `bundle` using `Gemfile` and `Gemfile.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
- Defaults to `false`
- Used by `install`
- `basepath` - **String** - Filesystem path in which Hydrate should search for functions
- Defaults the current working directory
- Useful if you want to hydrate one function or a subset of functions
- Used by `install` + `update`
- `copyShared` - **Boolean** - Enables or disables copying of shared code folders (e.g. `src/shared`) into Lambdas
- Useful to disable if you want to just hydrate external dependencies
- Defaults to `true`
- Used by `install` + `update`
- `cwd` - **String** - Root filesystem path of the project Hydrate is working in
- Defaults to current working directory
- May be the same or different from `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`)
- Useful to disable if you want to just hydrate external dependencies
- Defaults to `true`
- Used by `install` + `update`
- `inventory` - **Object** - Architect Inventory object; generally used internally
- `local` - **Boolean** - Favor the local platform during installation of dependencies that may be distributed as platform-specific binaries
- `only` - **String** - Specify a subset of possible shared files for `shared` to copy into Lambdas
- Falsy by default
- Accepts: `shared`, `views`, or `staticJson`
- Used by `shared`
- `quiet` - **Boolean** - Disables (most) logging
- `symlink` - **Boolean** - Enables or disables symlinking instead of full directory copying, useful for local development
- Defaults to `false`
- Used by `install` + `update` + `shared`
- `timeout` - **Number** - Amount of time in milliseconds to give each package manager process to execute
- Used by `install` + `update`
- `verbose` - **Boolean** - Enables verbose logging
> **Note on `cwd` vs `basepath`**: `cwd` is necessary for Hydrate to find your project's manifest and key files and folders, while `basepath` 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, use `cwd`.
## `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` if `package-lock.json` is present and `npm i` if not; or `yarn`
- **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` or `yarn 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.
[shared]: #hydratesharedoptions-callback
[install]: #hydrateinstalloptions-callback
[update]: #hydrateupdateoptions-callback
[npm]: https://www.npmjs.com/package/@architect/hydrate