@architect/arc-macro-node-prune v1.0.0
@architect/arc-macro-node-prune
Node.js-specific Architect macro based on
node-prunethat cleansnode_modulescruft from your Functions during deployment
Warning
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.
Installation
Run:
npm i @architect/arc-macro-node-pruneThen add the following to your Architect project file (usually
.arc):
@macros
architect/arc-macro-node-pruneNote, no
@in the macro name!
- Deploy your project (
npx deploy) and watch the filesizes drop 📉
Results
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!
Disabling the macro
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/arc-macro-node-pruneLimitations
- 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.