In general ---------- The idea is to make the project as simple as possible and the dev cycle as efficient as possible, for this reason only one lib manager is used (npm), only one build system (make) and any translation layers are avoided (less is likely to be phased out). With this approach for most cases and for testing in the browser after the initial setup only refreshing the page is required to load most of the changes (./css/layout.less being the only exception). 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/') }