How to import a JSON5 file (as one can regular JSON) in Typescript?

2.8k Views Asked by At

I would like to import a JSON5 file into a Javascript object in the same way [one can import a JSON file](import config from '../config.json').

PrintScreen

Shows this message on hovering but it's clearly there

Cannot find module '../conf/config.json5' or its corresponding type declarations.ts(2307)

I have 2 side questions related to the main one above:

  1. Will I get intelisense for contents inside .json5, like regular json
  2. Does it even work like it works with require()? Do I have to use import() instead of regular import ?
2

There are 2 best solutions below

3
On BEST ANSWER

You will need the package to do so: json5.

There are one of two ways we can use this:

One: (target module system is CommonJS) require it

Following the README, we register json5:

import "json5/lib/register";

Then you can use require to import it:

const config = require("../config/config.json5");

Two: Reading the file and then using json5 to parse it:

import json5 from "json5";
import { readFile } from "fs/promises";

(async () => {
    const text = await fs.readFile("./path/to/config.json5"); // path to config.json5 from entry point

    const config = json5.parse(text);
})();

You can also use the provided CLI to convert json5 files to regular json that you can use.

0
On

The creator updated the json5 wiki

Wiki

You need to create an extra file with .d.ts extension to support intellisense.