I'm implementing a client-side application in JavaScript using Node.js. Because I will be deploying the software on many machines, I would like to minimize the size of the package I distribute. In particular, I would like to remove any unnecessary files from node_modules.
For starters this means deduping and pruning the dependency tree, which npm
can do for me. But I'd also like to remove all the package.json
files and (especially) any other files that are not needed for deployment. In many of the packages I am using there are tons of tests, multiple versions of files (minified, browserified, etc.) and the like. I just need the JavaScript files that are actually used by the running app. Otherwise I'll be distributing a few 100Kb of files that aren't actually used.
I know about node-browserify
but my app will be running in a CommonJS environment, not a browser, so I'd like to keep the modules separate and load them with require
.
I'm thinking about writing a Grunt plugin that walks the dependency tree using required
, pulls out the JavaScript files needed at runtime and writes them to a tree structure so they can be loaded using require
(just loading the modules directly without needing a package.json
). But I'd like to make sure no one has done this for me before I tackle it.