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.
npm install --save-dev serverless-universal-packerCurrently running npm pack inside a workspace/monorepo package will not
include dependencies hoisted to the root node_modules folder. This is a
π known issue.
This script is a temporary workaround until the issue is fixed. It's meant to be
run inside a child package folder, and will create a .tgz file in the root
folder.
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.
cd packages/my-package
npx npm-pack-ws-fixAWS Lambda requires a .zip file containing the package.json and the
node_modules folder.
npm-pack-ws-fix, which internaly uses npm pack, creates a .tgz file with
an extra folder, package, containing the package files. This script extracts
the .tgz file and recreates the .zip without the extra folder.
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
bundleDependencies : string[] | boolean
This defines an array of package names that will be bundled when publishing the package.
// package.json
{
"files": ["src"],
"bundleDependencies": true
}# serverless.yml
plugins:
- serverless-shell-packer
custom:
shellPacker:
script:
- tgz_path=$(npx npm-pack-ws-fix | tail -n 1)
- npx convert-to-aws-zip "$tgz_path" | tail -n 1git clone [email protected]:asd-xiv/serverless-universal-packer.git asd14.serverless-shell-packerSee the releases section for details.