Node.js-specific Architect macro based on
node-prunethat cleansnode_modulescruft from your Functions during deployment
Pruning your node_modules tree(s) has some inherent risks. While we have found it to be stable and reliable, the packages your project uses may provide different results.
For example: while unlikely, a package that includes and makes use of a file with a commonly .npmignored filename may be impacted by this pruner. For a list of files and folders that are pruned, please review the pruner script source.
-
Run:
npm i @architect/macro-node-prune -
Then add the following to your Architect project file (usually
.arc):
@macros
architect/macro-node-prune
Note, no
@in the macro name!
- Deploy your project (
npx deploy) and watch the filesizes drop 📉
In practice, we have seen average filesize and file count reductions of about 25-30% across the board. That's a meaningful number for cloud functions!
If for whatever reason you need to disable the macro, simply comment it out in (or remove it from) your Architect project file:
@macros
# architect/macro-node-prune
- Architect supports shared code by selectively copying
src/sharedandsrc/viewsinto all Functions'node_modulesdirs by default.- Because this macro runs just prior to deployment, it must avoid Architect shared code dirs so as not to inadvertently destroy user files.
- As such, any
node_modulesfolders withinsrc/sharedorsrc/viewswill not be pruned.
- This macro relies on shelling out to a bash script, so ymmv on Windows.
