Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

node-dev

Package Overview
Dependencies
Maintainers
1
Versions
68
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-dev

Restarts your app when files are modified

  • 2.5.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
71K
decreased by-3.42%
Maintainers
1
Weekly downloads
 
Created
Source

Build Status

node-dev (1)

Node-dev is a development tool for Node.js that automatically restarts the node process when a file is modified.

In contrast to tools like supervisor or nodemon it doesn't scan the filesystem for files to be watched. Instead it hooks into Node's require() function to watch only the files that have been actually required.

This means that you don't have to configure any include- or exclude rules. If you modify a JS file that is solely used on the client-side but never run on the server, node-dev will know this and won't restart the process.

This also means that you don't have to configure any file extensions. Just require a .json file or a .coffee script for example and it will be watched. Automatically.

Node-dev uses filewatcher under the hood and hence will take advantage of the native fs.watch() API if it is available on your system.

Usage

Just run node-dev as you would normally run node:

node-dev foo.js

There are two command line options that can be used to control how many files are watched:

  • --no-deps Watch only the project's own files and linked modules (via npm link)
  • --all-deps Watch the whole dependency tree

By default node-dev will watch all first-level dependencies, i.e. the ones in the project's node_modulesfolder.

Installation

Node-dev can be installed via npm. Make sure to use the -g option to install it globally.

npm install -g node-dev

Desktop Notifications

Status and error messages can be displayed as desktop notification using either Growl or libnotify.

Screenshot

Screenshot

In order to use Growl notifications growlnotify must be installed on your system.

To use OSX's built in notifications:

sudo gem install terminal-notifier

Settings

Usually node-dev doesn't require any configuration at all, but there are some options you can set to tweak its behaviour:

  • clear – Whether to clear the screen upon restarts. Default: false
  • notify – Whether to display desktop notifications. Default: true
  • timestamp – The timestamp format to use for logging restarts. Default: "HH:MM:ss"
  • vm – Whether to watch files loaded via Node's VM module. Default: true
  • fork – Whether to hook into child_process.fork (required for clustered programs). Default: true
  • deps – How many levels of dependencies should be watched. Default: 1
  • dedupe – Whether modules should by dynamically deduped. Default: false

Upon startup node-dev looks for a .node-dev.json file in the user's HOME directory. It will also look for a .node-dev.json file in the same directory as the script to be run, which (if present) overwrites the per-user settings.

Dedupe linked modules

Sometimes you need to make sure that multiple modules get exactly the same instance of a common (peer-) dependency. This can usually be achieved by running npm dedupe – however this doesn't work when you try to npm link a dependency (which is quite common during development). Therefore node-dev provides a --dedupe switch that will inject the dynamic-dedupe module into your app.

Transpilers

You can also use node-dev to run transpiled languages. You can either use a .js file as entry point to your application that registers your transpiler as require-extension manually, for example by calling CoffeeScript.register() or you can let node-dev do this for you.

There is a config option called extensions which maps file extensions to compiler module names. By default this map looks like this:

    {
        "coffee": "coffee-script/register",
        "ls": "LiveScript"
    }

This means that if you run node-dev foo.coffee node-dev will do a require("coffee-script/register") before running your script.

Note: If you want to use coffee-script < 1.7 you have to change the setting to {"coffee": "coffee-script"}.

Graceful restarts

Node-dev sends a SIGTERM signal to the child-process if a restart is required. If your app is not listening for these signals process.exit(0) will be called immediately. If a listener is registered, node-dev assumes that your app will exit on its own once it is ready.

License

The MIT License (MIT)

Copyright (c) 2014 Felix Gnass

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Keywords

FAQs

Package last updated on 13 Oct 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc