Node.js-specific Architect macro based on
node-prune
that cleansnode_modules
cruft 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 .npmignore
d 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/shared
andsrc/views
into all Functions'node_modules
dirs 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_modules
folders withinsrc/shared
orsrc/views
will not be pruned.
- This macro relies on shelling out to a bash script, so ymmv on Windows.