JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 6551
  • Score
    100M100P100Q166482F
  • License MIT

Require JSON5 files in node - a better JSON for ES5 era

Package Exports

  • require-json5
  • require-json5/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (require-json5) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

require-json5 Build Status

Require JSON5 files in node - a better JSON for the JSNext era

JSON5 is more human friendly, can contain comments, trailing commas, unquoted keys and more!

Install

npm i -S require-json5

Usage

Include the lib:

const requireJSON5 = require('require-json5');
  1. Require a JSON5 file
let config = require("./config.json5");
 // or w/o the extension, when "./config.json5" exists and there is no "./config.json", nor "./config.js"
let config = require("./config");
  1. Explicitly load a .json file in JSON5 format
let config = requireJSON5("./config.json");
  1. Load a .js file as JSON5 format. This is useful if you don't like the .json5 file extension and prefer to keep JSON5 in .js files.
let config = requireJSON5("./config.js");
  1. Parse a JSON5 string
let config = requireJSON5.parse('{ name: /*a very important option*/ "value" }');
  1. Use JSON5 for all require(.json) calls
require('require-json5').replace();
let config = require("./config"); // can be config.json, config.json5 or config.js
  1. Restore the original require(.json)
require('require-json5').restore();

Example of JSON5

The following is a contrived example, but it illustrates most of the features:

{
    foo: 'bar',
    while: true,
 
    this: 'is a \
multi-line string',
 
    // this is an inline comment 
    here: 'is another', // inline comment 
 
    /* this is a block comment
       that continues on another line */
 
    hex: 0xDEADbeef,
    half: .5,
    delta: +10,
    to: Infinity,   // and beyond! 
 
    finally: 'a trailing comma',
    oh: [
        "we shouldn't forget",
        'arrays can have',
        'trailing commas too',
    ],
}

For more details on the JSON5 format see the json5 library.