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

easy-site

v1.1.0

Published

快速构建静态站

Downloads

3

Readme

easy-site

Building static empires with node.js.

Base on [romulus|https://github.com/felixge/node-romulus].

Install: [sudo] npm install -g easy-site

Features

Easy-site is a static site generator (like jekyll) featuring:

  • a clear folder convention
  • ejs template processing
  • generating css from less files
  • github flavored markdown
  • a local development server behaving like github pages
  • deploying to github pages

Planned:

  • page scripts that run before rendering
  • partials that can be included on any page
  • plugins (themes, blogging, google analytics, disqus, etc.)

You should use easy-site if you want a simple tool for creating static github pages with node.js.

Creating a static page

Create a new directory, and inside this directory create the folder structure below:

Note: Only the pages folder is required, the other folders are optional.

/pages
/layouts
/public

Now create a file called pages/index.html and put some HTML into it:

<p>Hello World</p>

Run this to build your static site:

$ easy-site build my-site

You should now see a new folder called my-site containing your index.html page exactly as you wrote it.

Note: If you ommit the my-site argument, easy-site will default to naming your output folder build.

For testing your site, you should run the local development server at http://localhost:8080/ by typing this:

$ easy-site //default port 8080
$ easy-site 9000 // port 9000

Layouts

In order to make this more interesting, let's say you want to wrap your new page in a fancy layout. To do this you need to change your pages/index.html file like this:

<% this.layout = 'default' %>
<p>Hello World</p>

Now you need to create the layout itself, so add a file called layouts/default.html:

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>My static empire</title>

    <!-- Can be a plain css file or rendered from less, continue reading -->
    <link rel="stylesheet" type="text/css" href="/css/main.css" />
    <!-- You can include any JS / CSS files, main.js / main.css are just examples -->
    <script src="/js/main.js"></script>
  </head>
  <body>
    <h1>My Header</h1>
    <%- page %>
  </body>
</html>

That's it, you should now see your page being rendered inside your template!

Accessing page variables in your layout

Let's say you want to set a title variable in your page that should be used by the layout. For this, add this to your page template:

<% this.title = 'My title'; %>

And output it in your layout like this:

<title><%= this.title %></title>

Generating css from less files

Now that you have this wonderful site, you probably want to style it. To do so, create a file called public/css/main.less:

body{
  h1{
    color: #0080FF;
  }
}

Sweet, your headline is now featuring my favorite color!

Static file support

Any file placed in the public folder will be included at the top level of the build output folder. The local development server also supports serving them.

Using markdown

easy-site natively supports github flavored markdown for page files. Using markdown is as easy as creating a file with a .md extension like pages/markdown-rocks.md and adding some markdown to it:

<% this.layout = 'default'; %>

Markdown is **fun**, and you can still use EJS inside of your markdown
templates.

This page now will be served at /markdown-rocks.

Deploying to github pages

Deploying to github pages is as simple as:

easy-site deploy

This should work well for project pages, but has not been tested for organization pages yet.

License

MIT License.