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-packer
Currently 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-fix
AWS 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 1
git clone [email protected]:asd-xiv/serverless-universal-packer.git asd14.serverless-shell-packer
See the releases section for details.