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

five-server

v0.3.3

Published

Development Server with Live Reload Capability. (Maintained Fork of Live Server)

Downloads

1,896

Readme

Five Server

Development Server with Live Reload Capability.
(Maintained Fork of Live Server)

  • Rewritten in TypeScript
  • Up-to-date dependencies
  • Better than ever!

Visual Studio Marketplace Rating Sponsors NPM version Github Workflow Github Workflow Downloads Node version Codecov


Top Features

  • 🚀 Remote Logs
    Displays the logs of your browser in your terminal!
    Useful for debugging on your smart phone for example.

  • 🚀 PHP Server
    Serves not only your .html files but also .php.
    See docs below

  • 🚀 Server Side Rendered App
    Works with any Server Side Rendered content like Express.js!
    See docs below

  • 🚀 Instant Updates
    Updates your html page while typing!
    (VSCode Extension only)

  • 🚀 Highlights
    Highlights the code you are working on in your browser!
    (VSCode Extension only)

  • 🚀 Auto Navigation
    Navigates your browser automatically to the current editing .html file!
    (VSCode Extension only)

Get Started

# Remove live-server (if you have it)
$ npm -g rm live-server

# Install five-server
$ npm -g i five-server

# Run it
$ five-server

# Update five-server (from time to time)
$ npm -g i five-server@latest

Usage

Five Server is written in TypeScript. Since it is nearly impossible to have a clean import for all module resolvers without restricting/adding explicit access to submodules via the exports property in package.json (which I don't want), I just list some very simple import examples.

Once everyone uses Modules in Node.js, I'm happy to make adjustments.

// TypeScript
import FiveServer from 'five-server'
new FiveServer().start({ open: false })

// Node.js Module
import FiveServer from 'five-server/esm.mjs'
new FiveServer().start({ open: false })

// Node.js Module (alternative)
import pkg from 'five-server'
const { default: FiveServer } = pkg
new FiveServer().start({ open: false })

// CommonJS
const FiveServer = require('five-server').default
new FiveServer().start({ open: false })

Documentation

Will be available soon.

Config File

Reference:

You will find all available options for your Config File in /src/types.ts.

A simple example of a config file:

Your browser will open the about page of your portfolio project at http://localhost:8085/about.html.

// .fiveserverrc
{
  "port": 8085,
  "root": "src/portfolio",
  "open": "about.html"
}

Another example:

Firefox (if available) will open https://127.0.0.1:8086/about.html and https://127.0.0.1:8086/contact.html.

// fiveserver.config.js
module.exports = {
  port: 8086,
  root: 'src/portfolio',
  open: ['about.html', 'contact.html'],
  host: '0.0.0.0',
  browser: 'firefox',
  https: true
}

(The https certificate is self-signed. Means, the first time you open your browser, you have to confirm that you want to continue.)

Debug on your Mobile Device

Allows you to connect your mobile device by making your server accessible externally.
You will see all logs from the mobile device in your terminal in yellow.

// fiveserver.config.js
module.exports = {
  host: '0.0.0.0', // default: '0.0.0.0' (could also be 'localhost' for example)
  remoteLogs: 'magenta' // true | false | Color
  useLocalIp: true, // optional: opens browser with your local IP
}

Watch & Ignore:

Watch only for file changes in /src. But exclude all .sass and .scss files from watching.

// fiveserver.config.js
module.exports = {
  // ...
  watch: 'src',
  ignore: /\.s[ac]ss$/i

  // can also be an array:
  // watch: ['src', 'public'],
  // ignore: [/\.s[ac]ss$/i, /\.tsx?$/i]
}

To prevent a single page from automatically reloading, add data-server-no-reload to the <body> tag:

<!doctype html>
<html lang="en">
<head>
    ...
</head>
<body data-server-no-reload>
  ...
</body>
</html>

This will omit the usually injected Javascript from being instantiated on that given page.

Browser of your choice

The option browser can be a string or an string[].
If you provide an array, the first browser found will be opened.

Following options are all valid:

'chrome'
['firefox', 'chrome --incognito']
['C:\\Program Files\\Firefox Developer Edition\\firefox.exe --private-window']

# if 'chrome' does not work, try 'google chrome' or 'google-chrome'

PHP Server

Serve and auto-reload PHP file in your browser!

Simply add the path to your PHP executable.

module.exports = {
  php: '/usr/bin/php', // Linux/macOS (example)
  php: 'C:\\xampp\\php\\php.exe' // Windows (example)
}

Cache

By default, the caching route (/.cache) is activated.

If in development you often load files from a CDN (styles, images, scripts, etc.), you might not want to make a http request to the CDN server on every reload. To prevent this and load your assets faster, simply add the cache attribute or manually prepend /.cache/ to your resources.

Example:

<!-- adding "cache" ... -->
<link cache rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/bulma.min.css" />

<!-- will convert this ... -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/bulma.min.css" />

<!-- into this. -->
<link rel="stylesheet" href="/.cache/https://cdn.jsdelivr.net/npm/[email protected]/css/bulma.min.css" />

Server Side Rendering (like express.js)

You can enable live reload for any server side generated content.

Check out the express.js example at /examples/express.

Simply start Five Server and add the script below to you files:

<script async data-id="five-server" src="http://localhost:8080/fiveserver.js"></script>

Add this config file:

// fiveserver.config.js
module.exports = {
  https: false,
  host: 'localhost',
  port: 8080,
  open: false // or open your express.js app (http://localhost:3000/ for example)
}

VSCode Extension

Download it from marketplace.visualstudio.com.

Logo

License

See LICENSE