# qsrv

> Quick web development server with live reloading and zero dependencies

Latest version **0.2.8** (published 2022-05-12) · BSD-2-Clause license · 0 weekly downloads

## Install

```sh
npm install qsrv
pnpm add qsrv
yarn add qsrv
bun add qsrv
```

Provides the command `qsrv`.

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.8 |
| Published | 2022-05-12 |
| First published | 2020-03-14 |
| Weekly downloads | 0 |
| License | BSD-2-Clause |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 332.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Shane Holloway |
| Maintainers | shanewholloway |

## Links

- npm: https://www.npmjs.com/package/qsrv
- Repository: https://github.com/shanewholloway/node-qsrv
- Homepage: https://github.com/shanewholloway/node-qsrv#readme
- Issues: https://github.com/shanewholloway/node-qsrv/issues
- npm.io page: https://npm.io/package/qsrv

## Recent versions

- 0.2.8 (latest) — 2022-05-12
- 0.2.7 — 2022-05-12
- 0.2.6 — 2022-05-06
- 0.2.5 — 2022-05-06
- 0.2.4 — 2022-05-06
- 0.2.3 — 2022-04-06
- 0.2.2 — 2022-03-24
- 0.2.1 — 2022-03-24
- 0.2.0 — 2021-12-27
- 0.1.9 — 2021-08-23
- 0.1.7 — 2020-05-18
- 0.1.6 — 2020-05-12
- 0.1.5 — 2020-04-22
- 0.1.4 — 2020-04-20
- 0.1.3 — 2020-04-17
- … 14 more at https://npm.io/package/qsrv/versions

## README

# qsrv

Quick web development server with live reloading and zero runtime dependencies.

Please note that the `qsrv` web server is intended for rapid and iterative
development -- not for deployment! Deploy using your favorite static web
server and good DevSecOps practices.

See [SPMDA][] for specific use of `qsrv` with web components and rapid idea
sketching on the web.

 [SPMDA]: https://github.com/qabex/spmda#readme


### Quick start

```bash
> ls
index.html
docs/

> npx qsrv

Quick Dev Server

  root: .
  fallback: index.html

  http://127.0.0.1:8080/
  http://10.0.0.5:8080/

[QSRV change detected]
[QSRV change detected]

```


### Web API

Use live reloading on non-fallback pages by referencing the livereload script

```html
<!DOCTYPE html>
...
<script src='/livereload.js'></script>
```

- `/livereload` -- Server Sent Event endpoint for live reload change notifications
- `/livereload.js` -- qsrv page reload script; this code is injected dynamically into fallback html.

```javascript
window.addEventListener('qsrv', evt => {
  console.log('qsrv', evt.detail)
})

window.addEventListener('qsrv-lsdir', evt => {
  console.log('qsrv-lsdir', evt.detail)

  // prevent page reloading default action
  evt.preventDefault()
})

window.addEventListener('qsrv-watch', evt => {
  console.log('qsrv-watch', evt.detail)
})
```


### Node API

See [API example](./docs/qsrv_api_example.mjs)

```javascript
import qsrv_sevrer from 'qsrv'

qsrv_sevrer({
    root: '.',
    fallback: 'index.html',
    port: 0,
    listen_addr: '0.0.0.0',
    reload: true || [/*paths to watch*/],
    lsdir: lsdir_examples(),

    credentials: { key: TLS_KEY, cert: TLS_CERT },
  })
.then(qsrv => {
  qsrv.log_changed()
  console.log()
  console.log(`Quick Dev Server`)
  console.log( qsrv.banner() )
})


function lsdir_examples() {
  return [
    // simple path watch
    './docs',

    // or detailed
    {
      // root: directory to watch for changes
      root: './other-docs',

      // file: output json file path to write to
      file: './list-other.json',

      // accept: filter function based on file name
      accept: fname => fname.endsWith('.md'),

      // on_refresh: change refresh; results are written as JSON to 'file'
      on_refresh(ls_entries) {
        console.log('Other Docs Update:', ls_entries)
        return ls_entries
      },
    },
  ]
}
```

---
_Source: https://npm.io/package/qsrv · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
