General environment
-------------------

ImageGrid will require the following installed and in path:
	- bash
	- make (GNU Make)
	- git
	- wget
	- zip / unzip / zipnote
	- grep / egrep / fgrep
	- sed


Some more dependencies will be installed by make via npm locally.


Dependencies can be checked with:

	$ make check



Then the build system/process is generally the same on all platforms:

- Clone the repository:

	$ git clone https://github.com/flynx/ImageGrid.git


- Build the dev envioronment (bash):

	$ make dev


- Run in-place:

	$ make run


- Build a distro:

	$ make dist



Windows environment
-------------------

This will require a UN*X-like build environment to run make and friends.


One way to go about this is (admin PowerShell):

- Install Chocolate

	> Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))


  For more info see: https://chocolatey.org/install


- Install git-bash based env:

	> choco install git nodejs wget zip sed grep


Now we can proceed with the normal build.



The Makefile
------------

For make help to work make requires: bash, sed, grep/fgrep and printf to 
be available in the path, run this to double check:

	$ make check-help

To check the full list of dependencies run:

	$ make check


The make file is largely self-documented so run this for more info:

	$ make help



Sharp and other native modules for nw/electron
----------------------------------------------

And for electron (done by make):

	electron-rebuild


To build sharp for a specific version of node and nwjs (outdated):

	cd ./node_modules/sharp/
	nw-gyp rebuild --target=0.17.4 --arch=x64



Chromium flicker issue (nw/outdated)
------------------------------------

The UI sometimes flickers -- at first blanks out to black then re-draws,
this is most noticeable on white or gray backgrounds. 

This appears to be GPU related.

package.json:
	"chromium-args": "--disable-gpu-compositing",

This will fix the issue temporarily, but we still need a better solution.



Remote debugging via DevTools (nw/outdated)
-------------------------------------------

Set this in package.json:
  "chromium-args": "--remote-debugging-port=9222",

Then open http://localhost:9222 in chrome.
	


Speedup loading of app (nw/outdated)
------------------------------------

One of the ways to speed up the load times when packed is to store Node's
modules ./node_modules in a separate location, outside of the app.zip
or package.nw
To enable require(..) to find them:
	- > npm install --save app-module-path
	- when building the zip move all the modules out to a new location
	  *except* app-module-path
	- add this line to all root js modules *before* any other 
	  require(..) is called:
	  	if(process.__nwjs){
			var path = require('path')
			require('app-module-path')
				.addPath(path.dirname(process.execPath) 
					+ '/node_modules/') }




