npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

self-reload-json

v0.4.0

Published

Self reloading JSON handler

Downloads

323

Readme

Self Reload JSON

GitHub issues GitHub license Node version NPM version NPM downloads

Simple node.js module which will auto reload specified JSON file. The instance created with this module will act as the parsed JSON object itself once loaded, you can read and write JSON content directly with the instance, also it will update automatically when the source JSON file is changed. Optional there is a save function that allows you write the modified data back into the JSON file.

Installation

With NPM:

$ npm install self-reload-json

Then in script file:

var SelfReloadJSON = require('self-reload-json');

Usage

To load a JSON file:

var config = new SelfReloadJSON(___dirname + '/config.json');

Then all loaded JSON content will be the part of the instance, just change it freely, then you can use the save function to save the changes back to the JSON file.

The SelfReloadJSON class itself inherits EventEmitter.

Methods

new SelfReloadJSON(options | fileName)

Construct the instance of self reload JSON file.

  • options - object, see the options below:
    • fileName - string, defines the path to the JSON file.
    • encoding - string, defines the encoding of the JSON file. Default is 'utf8'.
    • additive - boolean, defines the behavior when the JSON file changed externally, set to true if you want to keep the removed properties in the instance. Default is false.
    • method - string, must be 'native' or 'polling', default is 'native', defines what method to determine the changes of JSON file. 'native' mode will use system API to detect, and 'polling' mode will poll the modefied time of the JSON file. In the most case 'native' is more efficient, but some of the operating system does not support this, in this case 'polling' should be used as fallback.
    • interval - integer, the checking interval if 'polling' mode is used. Default is 5000 milliseconds.
    • reviver - function, the reviver function when parsing JSON. Default is null.
    • replacer - either number, string or function, the replacer function when converting JSON object back to string. You can override this option while calling save (see below). Default is null.
    • depth - integer, depth of deep patching which try to keeps child object with same references, 0 to disable, negative values to apply all. Default is -1.
    • delay - integer, set the delay time to trigger update the object in order to prevent event triggered several times or sometimes throws error because of trying to read the source JSON file but it is not yet completely updated. Default is 0 (immediately).

stop()

Stop watching the changes of the JSON file. You can use resume to continue watching the changes.

resume()

Start to watch the changes of the JSON file. In default, this is automatically called after instance construction.

forceUpdate()

Force update the JSON file.

save(options)

Write the changes back to the JSON file.

  • options - object, optional, will use default or inherted settings if this is not defined, see the options below:
    • encoding - string, defines the encoding of the JSON file. Default value is inherted from the constructor options.
    • replacer - either number, string or function, see the description in the option with same name in constructor. Default value is inherted from there.
    • space - either number or string, space parameter passed to JSON.stringify. Default is null.

Events

As this class is also inherits from EventHandler class of Node.JS, it will expose 2 event types with event handler.

on('updated', function(json) { ... })

This event will be emitted after the JSON content refreshed. The json parameter is the raw parsed JSON object (not the SelfReloadJSON instance itself).

on('error', function(err) { ... })

This event will be emitted while error occured when loading the updated JSON file. The err parameter will be the error thrown by the updater.

Limit

If a property name conflicts with the function names described above, they will be ignored. To get those values you should use updated event listener instead.

license

MIT