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

@zeph1rus/nginx-config-scaffold

v0.2.2

Published

A tool to scaffold out certs and dns names in nginx config files so that the config can be tested easily in ephemeral environments like CI tooling

Downloads

6

Readme

nginx-config-scaffold

nginx-config-scaffold is a tool to help you scaffold out nginx config dependencies, such as hostnames for upstreams and proxy destinations, and to create dummy certificates to allow you to test nginx configs (using nginx -t) without having to have your full nginx environment available.

Installing

Install with npm install @zeph1rus/nginx-config-scaffold

You'll need a version of Node.JS greater than 12.0.0, greater than 16 is HIGHLY RECOMMENDED!

Running

If you're testing nginx configs in an ephemeral CI environment such as GitHub Actions, Gitlab, or Bitbucket cloud, just install nginx, copy your config to the nginx config directory, and run

npx run nginx-config-scaffold --basedir <your-config-dir>

by default, we only create certificates, if you wish for your hosts file to be updated with proxies or upstreams there are additional parameters to add.

One most Unixey platforms we will try to write to /etc/hosts, on Solaris it's /etc/inet/hosts and on Windows we try C:\WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS

Parameters

    --basedir <baseDir>    Directory to scan configs from recursively
    --upstreams            Add upstreams to hosts file
    --proxies              Add proxy hosts to hosts file
    --dryrun               Don't make changes, just tell me what actions would be performed
    --help/-h              This help

Running in a Dockerfile

We've provided a sample dockerfile and entrypoint.sh to allow you to build a docker image and use that to test. You will want to update MY_CONFDIR_CHANGE_ME to match your config directory

When run this container will exit with a non-zero exit code if the test fails

Dockerfile

FROM alpine:latest
RUN apk add nginx nodejs npm
COPY MY_CONFDIR_CHANGE_ME /etc/nginx
RUN mkdir /opt/app
WORKDIR "/opt/app"
COPY "entrypoint.sh" "."
RUN chmod u+x entrypoint.sh
RUN npm i @zeph1rus/nginx-config-scaffold
ENTRYPOINT ["./entrypoint.sh"]

entrypoint.sh

#!/usr/bin/env sh
npx nginx-config-scaffold --basedir /etc/nginx --upstreams --proxies
nginx -t

Nginx Plus

This should work fine on NGINX plus installs, as long as you have it installed, if not the tests will fail on nginx-plus specific directives.