### Basic

    {
      "name": "expo",
      "description": "My package",
      "version": "0.1.0",
      "license": "MIT",
      "keywords": ["http", "server"],
      "author": "Rico Sta. Cruz <rstacruz@users.noreply.github.com>",
      "engines": {
        "node": ">=0.8.0"
      },
      "main": "index",
      "bin": {
        "command": "./bin/command"
      },
      "repository": {
        "type": "git",
        "url": "https://github.com/rstacruz/___.git"
      },
    }

Highlighted lines are required.

### Dependencies

    "dependencies": {
      "colors":   "*",
      "flatiron": "0.1.x",
      "flatiron": "~0.1.0",
      "plates":   "https://github.com/user/project/tarball/branch",
      "stuff":    "git://github.com/user/project.git#commit-ish"
    },

    "devDependencies": { ··· },
    "peerDependencies": { ··· },
    "optionalDependencies": { ··· },

See Semver cheatsheet for explanation of version ranges.

### Scripts

    "scripts": {
      "start": "node ./bin/xxx",       /* npm start */
      "test": "vows --spec --isolate", /* npm test */
      "postinstall": "...",
      "prepublish": "grunt build",     /* after 'npm install' and before 'npm
                                          publish' */
    }

### Misc

    "private": true,
    "preferGlobal": true

### Config

    {
      "config": {
        "foobar": "hello"
      },
      "scripts": {
        "run": "echo $npm_package_config_foobar"
      }
    }

Keys in `config` are exposed as env vars to scripts.

## References

- http://package.json.nodejitsu.com/
- `npm help package.json`

0 Comments for this cheatsheet. Write yours!