tl:dr Including big NPM modules, like THREE.js, directly in the package you’re developing massively increases build/reload time. Instead, create another package and export their NPM modules’ top-level object. Packages are only rebuilt when something inside them changes. This is easier in 1.3 because you can
require on the client.
I didn’t realise the problem until late in the day. Here’s everything else we did to reduce build/reload time (I think they improved things but can’t be sure):
- Place all code inside packages (less files loaded by the browser: one per package)
- Temporarily removed minifiers
- Remove all unused standard packages
- Temporarily remove packages that provide parts of the app that aren’t under development
- Disable source maps in browser so less files are loaded.
- Move Less/CSS into it’s own package to it doesn’t get rebuild/concatenated.
Some parts of the app are developed as stand-alone NPM modules. However, if you do this under Meteor’s PACKAGE_DIRS, Meteor will watch your node_modules, even though it only contains local development and testing modules. Solution: move the project out of PACKAGE_DIRS and use gulp to build it into the Meteor package directory.
- Also tried working from a tmpfs. That was scary.
Build/reload time has gone from ~20s server/client reload to ~4s