app.json
Version:
Create, validate, and render Heroku app.json manifests
136 lines (88 loc) • 3.4 kB
Markdown
# app.json [](https://travis-ci.org/heroku/app.json)
`app.json` is a manifest format for describing web apps. It's a file in the root
directory of an app that describes the app's build requirements, environment variables, addons,
and other information.
This repository contains the source for an npm module called
[app.json](https://www.npmjs.org/package/app.json), which has many facets:
- A JavaScript interface for creating, validating, and producing app.json manifests.
- A module that is designed to work in browsers and Node.js.
- A CLI for creating manifests and producing schema documentation.
## Installation and Usage
### Usage on the Command Line
To use this module on the command line, install it globally using npm:
```sh
npm install app.json --global
```
Now run `app.json` (or simply `app`) from any directory.
### Programmatic usage with Node.js or Browserify
Download the module from npm and save it to your package.json:
```sh
npm install app.json --save
```
Require it in your script:
```js
var App = require("app.json")
```
### Usage in the Browser (without Browserify)
If browserify isn't your thing, use the pre-compiled browser-ready bundle in
[dist/app.js](/dist/app.js). Include this file in your html page and it will create
`window.App` for you.
## Schema
The app.json schema is defined using the [JSON Schema](http://json-schema.org/)
specification and is validated with the
[revalidator](https://github.com/flatiron/revalidator#readme) node module. View
the [raw schema](/lib/schema.js) or the auto-generated [app.json
Schema Documentation](https://devcenter.heroku.com/articles/app-json-schema) on Heroku Dev Center.
## Class Methods
### App.new(payload)
Instantiate with a JSON filename:
```js
var app = App.new(__dirname + "/path/to/app.json")
```
Instantiate with a JSON string:
```js
var json = "{name: \"small-sharp-tool\", description: \"This app does one little thing, and does it well.\"}"
var app = App.new(json)
```
Instantiate with a JavaScript object:
```js
var app = App.new({
name: "small-sharp-tool",
description: "This app does one little thing, and does it well."
})
```
### App.fetch(url, callback)
You can fetch app manifests straight from GitHub. The
[github-raw-cors-proxy](https://github.com/zeke/github-raw-cors-proxy) service is used
to make the `app.json` file downloadable from browsers.
`url` can be a fully qualified GitHub URL, or a shorthand `user/repo` string:
```js
App.fetch('zeke/harp-slideshow-template', function(err, manifest) {
console.log(err, manifest)
})
```
### App.example
Generates an example manifest from `example` properties in the [schema](/schema.js).
```js
App.example
```
## Instance Methods
### app.valid
A getter method that validates the app manifest and returns `true` or `false`
### app.errors
Returns an array of error objects:
```js
[
{property: "name", message: "is required"},
{property: "website", message: "is not a valid url"}
]
```
If the manifest is valid, an empty array is returned.
### app.toJSON
Returns a pretty JSON string of the manifest, minus any undocumented properties.
### app.getAddonPrices(callback)
Fetch pricing data about the app's required addons by hitting the Heroku Platform API.
## Contributing
See [CONTRIBUTING.md](/CONTRIBUTING.md)
## License
MIT