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

feathers-service-reloader

v0.1.2

Published

A plugin for FeathersJS v5 to enable real-time service reloading during development

Downloads

208

Readme

feathers-service-reloader

feathers-service-reloader is a plugin designed for FeathersJS v5 applications, enabling real-time service reloading during development. It watches specified service files for changes and dynamically reloads them without requiring a full restart of your FeathersJS app. This is especially useful for a smooth development workflow, where changes to service files, schemas, and shared modules are immediately applied.

Note: This package specifically handles changes to service files only, allowing you to apply modifications to your services without restarting the entire application. As the number of services in a project grows, restarting the whole application with tools like nodemon can take several seconds. With feathers-service-reloader, individual services reload in milliseconds, making development faster and more efficient.

Compatibility: This package is designed to work exclusively with FeathersJS v5.

Features

  • Watches FeathersJS service files for changes
  • Automatically reloads modified services
  • Clears module cache to apply the latest updates
  • Removes AJV schemas and reloads them dynamically

Installation

Install the package via npm:

npm install feathers-service-reloader --save-dev

Usage

Add feathers-service-reloader as a plugin in your FeathersJS v5 application to enable dynamic service reloading.

Example

import { serviceReloader } from 'feathers-service-reloader';

const app: Application = express(feathers())

// Initialize the service reloader plugin
if (process.env.NODE_ENV === 'development') {
  serviceReloader(app)
}

Configuration

feathers-service-reloader uses a default configuration to watch for changes in *.class.ts, *.schema.ts, *.shared.ts, and *.ts files within the services directory. When a change is detected, the service is automatically reloaded, and AJV schemas associated with the service are removed and refreshed.

Updating validators.ts

To ensure proper schema reloading, make sure that dataValidator in your validators.ts file is set up as follows:

export const dataAjv = new Ajv({});
export const dataValidator: Ajv = addFormats(dataAjv, formats);

Recommended dev Script

To prevent nodemon from restarting your application when files in the src/services/ directory are modified, you can use the following dev script in your package.json:

{
  "scripts": {
    "dev": "cross-env NODE_ENV=development nodemon --ignore src/services/ -x ts-node src/index.ts",
  }
}

This setup will ignore changes in the src/services/ directory, allowing feathers-service-reloader to handle those changes without restarting the entire application.

API

serviceReloader(app) app: Your FeathersJS application instance. This function takes in a FeathersJS app instance and sets up file watching on the specified service files.

How It Works

  • File Watching: The plugin watches for changes in specified files (class, schema, shared, and .ts).
  • Module Cache Clearing: It clears the require cache, ensuring that the latest version of the modified files is loaded.
  • Schema Update: Uses AJV's removeSchema method to delete outdated schemas, allowing the latest ones to be applied on reload.