`with-json-file` is public but it uses `write-json-file` and `remove-json-file`, which are not public. It appears that when the macro is expanded in lein-bower, these are not available. This can raise an error:
```
$ lein bower
java.lang.IllegalStateException: var: #'leiningen.npm/write-json-file is not public, compiling:(leiningen/bower.clj:54:6)
...
```