nw-dev

A drop-in library for nw.js development

Usage no npm install needed!

<script type="module">
  import nwDev from 'https://cdn.skypack.dev/nw-dev';
</script>

README

nw-dev

A drop-in library for nw.js development

  • Live-reloads upon save

  • Reloads when you press F5

  • Opens the devtools when you press F12 (nw@>=0.13.0 does this for you)

  • Opens the devtools upon error

  • Sets window.CRASHED upon error, so you can stop an animation loop for example (and not flood the console with errors)

  • Clears the require cache, so reloading works with modules

  • When you change package.json, it closes and reopens the window with the new values, so you don't even have to restart to change things like window.frame (not working in latest nw.js)

  • When loaded in a browser (non-nw.js), it only tries to do error handling

install

npm i nw-dev --save-dev

Put this script before any other scripts (that you're developing, at least):

<script src="node_modules/nw-dev/lib/dev.js"></script>

exclude some files from being watched

By default node_modules, npm-debug.log, .git, .hg, and .svn are ignored.

You can ignore additional paths by adding a data-ignore attribute to the script:

<script src="node_modules/nw-dev/lib/dev.js" data-ignore="data.json|*.md"></script>

The ignore pattern will be passed to chokidar and interpreted by micromatch.

don't annoyingly assert window focus when reloading

(This can be especially annoying if your editor autosaves!)

You may have your app set up to show itself once it finishes loading.

That's a good thing, but if you're calling win.show(), it can inadvertently focus the window.

Do this (with JavaScript):

if(!win.shown){
    win.show();
    win.shown = true;
}

Or this (with CoffeeScript):

win.show() unless win.shown
win.shown = yes

(Now autosaving can once again be beneficial!)

develop nw-dev

  • npm i

  • npm link, and npm link nw-dev from an nw.js project

  • npm run prepublish to recompile