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

jhp

v0.2.1

Published

php-like syntax on top of nodejs (bring on the death threats!)

Downloads

15

Readme

JavaScript Hypertext Preprocessor

You had nightmares about it, the frenchman did it!

WTF?

JHP brings a PHP-like approach to Node.JS programming. To make it brief it's a "best of both worlds", "worse of both worlds" kind of deal.

Install and run

npm install jhp -g

In a folder, create a package.json file with the following elements:

{
	"public": "path/to/htdocs",
	"port": 8080
}

Where:

  • public is the root of the web server,
  • port is the port the server has to listen to.

Then, in the command line: jhp start path/to/folder/with/config (by default jhp will look into the current directory)

Use

In the main public folder, create index.jhp:

<?
	response.setHeader( "Content-Type", "text/plain" );
	response.write( request.url );
	request.end();

So, yes, it's pretty much the same as PHP:

  • files with the .jhp extension will be executed by the server,
  • while other files will be passed verbatim to the client (like a static file server would).

response and request are the same objects you'd have in a http.createServer handler. Except that request has several new fields:

  • body, a promise that gets resolved with the request body (if and when the request has a body)

      <?
      	request.body.done(function( body ) {
      		response.end( body );
      	});
  • query, a promise that gets resolved with the merge of both GET and POST parameters

      <?
      	response.setHeader( "Content-Type", "text/plain" );
      	request.query.done(function( query ) {
      		for ( var key in query ) {
      ?>
      <?= key ?>: <?= query[ key ] ?>
      <?
      		}
    			response.end();
      	});
  • parsedURL, the request url as parsed by require("url").parse( url, true )

(the promises are implemented by JQDeferred)

Remember: this is still Node.JS we're talking about, so always call reponse.end() when you wanna flush the response!

What now?

JHP is meant as a rapid prototyping and testing environment, nothing more, nothing less. It won't toast your bread.

It is licensed under both the GPLv2 and the MIT licenses.

JHP is pretty fresh out of the oven, code is crude and features are sparse...

So it needs you:

  • what kind of pluggable architecture should it have?
  • what built-in feature is it lacking?

What we intend to work on right now is the static file serving part.