Easily create deployment artifacts with the minimum set of dependencies required. Tree-shaking made easy.
Deployment artifacts can easily get out of hand in size when unnecessary dependencies are included in it. simple-artifact-builder
makes it easy to create deployment artifacts with only the dependencies required for your code and nothing more, through file tracing.
npm install --save-dev simple-artifact-builder # install it
npx simple-artifact-builder help # and test that you can use it
define your artifact.yml
config file to specify what files should be included in the artifact with trace
(to include it and its traced dependencies) or pick
(to just include that file).
for example, for an aws lambda service, you may use something like this:
# artifact.yml
trace:
- dist/contract/handlers/**/*.js # include the handlers of an aws-lambda
- !dist/contract/handlers/**/*.test.js # but make sure to not to include any test files
pick:
- config/*.json # also include the `config` directory, since we dynamically import it
alternatively, if you're deploying a Next.JS
project, you may want to use the .nft.json
trace output files that they already include. for example:
# artifact.yml
trace:
- 'dist/server/handler.js' # trace the dependencies of the handler to include the handler and all the code it depends on
- '.next/**/*.nft.json' # use the trace-output files that next.js automatically generates to include all of the dependencies of the .next server
- '!.next/cache/**/*.nft.json' # dont use the trace-output files from the .next/cache dir though, as they're not actually defined correctly nor needed
pick:
- '.next/**/*' # include this whole directory, since the nextjs-server-side-rendering server uses its contents through dynamic imports
- '!.next/cache/**/*' # exclude the cache though, since that's only needed while compiling and is very large/heavy
now that you've configured your project's artifact settings, you can build the artifact.
for example, build the artifact into a zip file (e.g., for usage with serverless artifact input
)
npx simple-artifact-builder zip
this will output:
.artifact/contents.zip
- the zipped up artifact, ready for deployment.artifact/contents
- a directory which hold the contents that were zipped up.artifact/contents.manifest.json
- a file which lists all of the files included in the contents.artifact/contents.sizes.json
- a file which defines the sizes of each file included in the contents
display help for simple-artifact-builder
USAGE
$ simple-artifact-builder help [COMMAND]
ARGUMENTS
COMMAND command to show help for
OPTIONS
--all see all commands in CLI
See code: @oclif/plugin-help
builds and zips the artifact
USAGE
$ simple-artifact-builder zip
OPTIONS
-c, --config=config (required) [default: artifact.yml] path to the artifact config yml
-h, --help show CLI help
See code: dist/contract/commands/zip.ts
Team work makes the dream work! Please create a ticket for any features you think are missing and, if willing and able, draft a PR for the feature :)