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

setupjs

v2.2.2

Published

Frontend projects configurator

Downloads

80

Readme

Setup.js

Command line tools for config your project.

Overview

Setup.js uses help files:

  • defaults.json — default config file
  • presets.json — file with presets for different environments
  • env-map.json — map for environment variables into config

Setup.js generates config.json file with current config from help files by commands set, unset, preset, reset, env, extend. config.json may bee ignored in CVS for project.

Each developer can use his own config, changing config.json manually or by cli tool.

Install

npm install setupjs

or global

npm install -g setupjs

Initialize tools for your project:

$(npm bin)/setupjs init

For global:

setupjs init

Customize paths to help files if needed by params -c, -e, -p, -s.

Add config.json in .gitignore.

Use

For local installation:

npm run setup -- <params>

For global installation:

setupjs <params>

Params

  • -h, --help — show help
  • -V, --version — show version
  • -v, --verbose — run commands in verbose mode and print config.json
  • -c, --config [file] — redefine path to config file (config.json)
  • -p, --presets [file] — redefine path to presets file (presets.json)
  • -e, --env-map [file] — redefine path to environment variables map file (env-map.json)
  • -d, --defaults [file] — redefine path to default config file (defaults.json)

Commands

  • init — init Setup.js in project;
  • env — config from environment variables mapped by env-map.json;
  • extend [path] — extend config from JSON file;
  • preset [name] — set (extending) config from presets;
  • set [<key> <value>]... — set config params by key/value pairs;
  • unset [key]... — unset config params by keys;
  • reset — reset config to default params.

reset

Reset config.json to config from defaults.json

preset

Set (with deep extending) from presets file (see ./examples/environments.json). First indent fields must be a names of presets. For example:

{
    "producton": { // name of preset
        "server": {
            "url": "https://example.com/api"
        }
    },
    "staging": {  // name of preset
        "server": {
            "url": "https://staging.example.com/api"
        }
    }
}

Available presets: producton and staging.

Use example:

setupjs preset staging

Config:

{
    "server": {
        "url": "https://staging.example.com/api"
    }
}

env

Update config from environment variables:

setupjs env

env-map.json example:

{
    "HOST": "server.host",
    "PORT": "server.port",
    "FLAG_ONE": "server.flags.one"
}

Use example:

export HOST=127.0.0.11
export PORT=8080
export FLAG_ONE=false
setupjs env

Config:

{
    "server": {
        "url": "https://staging.example.com/api",
        "host": "127.0.0.11",
        "port": 8080,
        "flags": {
            "one": false
        }
    }
}

extend

Extend config from some JSON file.

Example file extend_example.json:

{
    "server": {
        "port": 8888,
        "flags": {
            "two": true
        },
        "remote": [1, 2, 3]
    }
}

Use exapmpe:

setupjs extend ./extend_example.json

Config:

{
    "server": {
        "url": "https://staging.example.com/api",
        "host": "127.0.0.11",
        "port": 8888,
        "flags": {
            "one": false,
            "two": true
        },
        "remote": [1, 2, 3]
    }
}

set

Set (with deep extending) config key/value pairs:

setupjs set server.url https://example.com/api server.producton true server timeout 5000 server.local.list `[1,3,4]`

Config:

{
    "server": {
        "url": "https://example.com/api",
        "host": "127.0.0.11",
        "port": 8888,
        "producton": true,
        "timeout": 5000,
        "flags": {
            "one": false,
            "two": true
        },
        "remote": [1, 2, 3],
        "local": {
            "list": [1, 3, 4]
        }
    }
}

Tool set value type automaticly.

Next call:

setupjs set server.url https://staging.example.com/api server.flags.one true server.local null debug true

Config:

{
    "server": {
        "url": "https://staging.example.com/api",
        "host": "127.0.0.11",
        "port": 8080,
        "producton": true,
        "timeout": 5000,
        "flags": {
            "one": true,
            "two": true
        },
        "remote": [1, 2, 3],
        "local": null
    },
    "debug": true
}

unset

Remove (with deep extending) params by keys.

For example (config from set examples):

setupjs unset debug server.flags server.producton

Config:

{
    "server": {
        "url": "https://staging.example.com/api",
        "host": "127.0.0.11",
        "port": 8080,
        "timeout": 5000,
        "remote": [1, 2, 3],
        "local": null
    }
}

Releases

See releases on Releases page.

Upgrading from 1.x to 2.x

Rename settings.json to defaults.json and environments.json to presets.json. Run setupjs init.