Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »


0.2.0 • Public • Published

JavaScript Obama Style

travis npm downloads


CODE like Obama

Many have asked me what [code] President Obama wrote. It was a single line of JavaScript:


The President asked if he needs to type the F in upper-case, and he got the () and the ; right too, he was very precise and didn't make a typing mistake.

-- Hadi Partovi, CEO, Code.org

We all want to be precise with no typing mistakes, just like Obama. We've got your back with obama!


npm install -g obama


Like a mic drop but for semi-colons


  • semicolons
  • Presidential Seal of Approval
  • Check feross/standard for the rest of the rules.


Use this in one of your projects? Include one of these badges in your readme to let people know that your code is using obama style.






The easiest way to use JavaScript Obama Style to check your code is to install it globally as a Node command line program. To do so, simply run the following command in your terminal (flag -g installs obama globally on your system, omit it if you want to install in the current working directory):

npm install obama -g

After you've done that you should be able to use the obama program. The simplest use case would be checking the style of all JavaScript files in the current working directory:

$ obama
Error: Use JavaScript Obama Style
  lib/wh.js:950:11: Expected '===' and instead saw '=='.

What you might do if you're clever

  1. Add it to package.json
  "name": "my-cool-package",
  "devDependencies": {
    "obama": "*"
  "scripts": {
    "test": "obama && node my-normal-tests-littered-with-semicolons.js"
  1. Check style automatically when you run npm test
$ npm test
Error: Code style check failed:
  lib/wh.js:950:11: Expected '===' and instead saw '=='.
  1. Never give style feedback on a pull request again! (unless it's about semicolons)

Custom Parser

To use a custom parser, install it from npm (example: npm install babel-eslint) and add this to your package.json:

  "obama": {
    "parser": "babel-eslint"

Ignoring files

Just like in standard, The paths node_modules/**, *.min.js, bundle.js, coverage/**, hidden files/folders (beginning with .), and all patterns in a project's root .gitignore file are automatically excluded when looking for .js files to check.

Sometimes you need to ignore additional folders or specific minfied files. To do that, add a obama.ignore property to package.json:

  "ignore": [

Make it look snazzy

If you want prettier output, just install the snazzy package and pipe obama to it:

$ obama --verbose | snazzy

See feross/standard for more information.

Gah look at that CODE


npm i obama

DownloadsWeekly Downloads






Last publish


  • avatar
  • avatar