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/') }