Yesterday a user of the Staticfile buildpack noted that cf push would fail to upload files & start the deployment sometimes. "It takes forever and fails". We spotted the root cause:

"Why is it uploading 26,000 files? The final project in dist folder only has a few."

The problem was that we were uploading the whole project repo - which was using grunt to build out a large complex static file project. It had a Staticfile referencing the final project subfolder:

root: dist  

But then he was pushing all 26,000 files; even though the buildpack was only going to use the dozen files in the dist folder.

Solution

And instead of pushing the whole project folder, we now only push the dist folder.

We can do this with the CLI:

cf push mainsite -p dist  

Or we can do this with a manifest.yml file:

---
applications:  
- name: mainsite
  path: dist

Finally, we removed the ./Staticfile file and created a new, blank one in dist/Staticfile.

Your source project might now looks something like:

├── dist
│   ├── Staticfile
│   ├── css
│   ├── images
│   ├── index.html
│   └── js
├── manifest.yml
└── src

Summary: the dist folder is the only folder that is pushed; and we tell Cloud Foundry that it needs the Staticfile buildpack with an empty Staticfile.