📦 serverless-universal-packer
Serverless plugin for custom packaging using BASH scripts with little to no dependencies.
🛠️ Flexibility: Don't rely on the existence of specialized plugins interfacing bundler X. Easily pivot when a better suited builder comes out.🟩 Low complexity: Specialized plugins mostly just proxy to the underlying bundler. You can do that yourself in a few command lines.🔁 Stay Updated: Keep dependencies updated without waiting for plugin updates.
Table of contents
📥 Install
npm install --save-dev serverless-universal-packer
🔧 Custom BASH scripts
sls-up_workspace-pack
Currently running npm pack
inside a workspace/monorepo package will not
include dependencies hoisted to the root node_modules
folder. This is a
To get around this limitation, temporary use this script.
Internally it copies missing dependencies from the root node_modules
into
child package node_modules
and runs npm pack
. After the package is created,
the original child node_modules
is restored.
npx sls-up_workspace-pack
# /path/to/package.tgz
sls-up_convert-to-aws-zip
📚 Examples
📦 NPM
Without any additional packages, NPM provides a built-in mechanic to package
your code using npm pack
. This will create a .tgz
file in the root of your project.
files
: string[]
The optional files field is an array of file patterns that describes the entries to be included when your package is installed as a dependency
bundledDependencies
: string[] | boolean
This defines an array of package names that will be bundled when publishing the package.
// package.json
{
"files": ["src"],
"bundledDependencies": true
}
# serverless.yml
plugins:
- serverless-universal-packer
custom:
universalPacker:
script:
- tgz_path=$(npx sls-up_workspace-pack | tail -n 1)
- zip_path=$(npx sls-up_convert-to-aws-zip "$tgz_path" | tail -n 1)
- echo "$zip_path"
🔷 Typescript
⚡ SWC
💻 Development
git clone git@github.com:asd-xiv/serverless-universal-packer.git asd14.serverless-universal-packer
📜 Changelog
See the releases section for details.