Skip to content

πŸ“¦ Serverless plugin for custom packaging using BASH scripts with little to no dependencies.

License

Notifications You must be signed in to change notification settings

asd-xiv/serverless-universal-packer

Repository files navigation

πŸ“¦ serverless-universal-packer

CircleCI Coverage Status Dependencies NPM Version Semantic Release with Conventional Commits

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 πŸ› known issue.

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 [email protected]:asd-xiv/serverless-universal-packer.git asd14.serverless-universal-packer

πŸ“œ Changelog

See the releases section for details.